Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2023, 14:40   #11
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

ваш общий запрос, почему-то исключил DEVICE которое имеет всего лишь одну строку (в таблице), в которой DISPLAY = 1 И CONTROL = 1 (эту строку исключает left, потому что ее нет в результате первого select)

которую выдает ваш второй select

Последний раз редактировалось KBO; 07.02.2023 в 15:08.
KBO вне форума Ответить с цитированием
Старый 07.02.2023, 15:25   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
почему-то исключил DEVICE которое имеет всего лишь одну строку
Код:
                                   and display =0  --возможно из без этого
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.02.2023, 18:06   #13
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Еще раз спасибо, всё работает!!!
KBO вне форума Ответить с цитированием
Старый 11.02.2023, 12:43   #14
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

А вот уважаемый evg_m, не подскажите еще такой момент, я ваш запрос представил как "VIEW" - работает молнееносно. - претензий к нему никаких.

Мой бывший запрос с ошибкой (представленный в первом посте), который выдавал 91 запись (ошибочно), вместо теперешних 105 работал также без тормозов.

Но когда я включил в запрос "VIEW" (просто обалдел) - запрос выполняется 30 секунд (от начала выполнения, до появления результатов).

Код:
------ Performance info ------
Prepare time = 0ms
Execute time = 6s 969ms
Avg fetch time = 409,94 ms
Current memory = 11 449 464
Max memory = 12 485 992
Memory buffers = 2 048
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 56 175 624
(только вот из-за этой строки "left join V_CERTIFICATE_SIGNAL vcs on vcs.DEVICE_ID_CL = eq.ID ")
Код:
select
eq.ID, eq.NAME,  eq.CONTROL_MIN_DATE, eq."TYPE", eq.NUMBER, eq.NEMBER_INVENTORY, eq.PRODUCER, eq.YEAR_BEGIN, eq.NAME_TEST, eq.REMARK, eq.USER_ID,  eq.DEPARTMENT_ID, eq.TIME_EDIT,
 eq.ARCHIVE, eq.SPECIFICATION, eq.DEVICE_DEPARTMENT_ID, eq.TYPE_SERIES, eq.DISLOCATION, eq.TYPE_EQUIP, eq.PASSPORT, eq.WARNING,  eq.EQUIPMENT_LABORATORY_ID, eq.COUNT_CERT_REQUIRE,
 eq.CONTROL_MIN_DOC,  eq.EQUIPMENT_PARENT_USER_ID, eq.COUNT_CERT, l.NAME_SHORT as l_NAME_SHORT_LAB,   eq.LABORATORY_DOC_ID, eq.FIND_TALLY, eq.DISLOCATION_ORG, eq.USER_DOC_ID,
 u.FULL_NAME as u_EQUIPMENT_USER, ld.NAME_SHORT as l_LABORATORY_DOC, ud.FULL_NAME as u_USER_DOC
, (case when c.NUMBER_CERT = '-1' then '' else c.NUMBER_CERT end) as c_NUMBER_CERT,  c.DATE_OPERATION as c_DATE_OPERATION, c.CALIBRATION_INTERVAL as c_CALIBRATION_INTERVAL

 from EQUIPMENT eq
 left join LABORATORY l on l.id = eq.EQUIPMENT_LABORATORY_ID
 left join LABORATORY ld on ld.id = eq.LABORATORY_DOC_ID

 left join V_CERTIFICATE_SIGNAL vcs on vcs.DEVICE_ID_CL = eq.ID   -- "VIEW"
 left join CERTIFICATE c on vcs.CERTIFICATE_ID = c.ID

  left join USERS_DATA u on u.ID = eq.EQUIPMENT_PARENT_USER_ID
  left join USERS_DATA ud on ud.ID = eq.USER_DOC_ID

    where eq.ARCHIVE in (1)
  and (((eq.CONTROL_MIN_DATE < '07.02.2023' and not eq.CONTROL_MIN_DATE is null)  or (eq.CONTROL_MIN_DATE is null and eq.COUNT_CERT <> -1)  or (eq.CONTROL_MIN_DATE is null and eq.COUNT_CERT >= 0)  or (eq.COUNT_CERT_REQUIRE <> eq.COUNT_CERT))
  and ((eq.CONTROL_MIN_DATE < '07.02.2023' and not eq.CONTROL_MIN_DATE is null)  or (eq.CONTROL_MIN_DATE is null and eq.COUNT_CERT <> -1)  or (eq.CONTROL_MIN_DATE is null and eq.COUNT_CERT >= 0)  or (eq.COUNT_CERT_REQUIRE <> eq.COUNT_CERT)))
 
  and ((c.CONTROL = 1 and eq.PASSPORT = 0) or ((c.CONTROL is null or c.CONTROL=1) and eq.PASSPORT = 1))

  order by eq.EQUIPMENT_PARENT_USER_ID, eq.NAME, eq.TYPE, eq.NUMBER, eq.NEMBER_INVENTORY
ОТКУДА ТАКОЙ РАЗНОС ВО ВРЕМЕНИ ИСПОЛНЕНИЯ???, да разница будет, ну НЕ ТАКАЯ же.

Такое впечатление, что "VIEW" исполняется, все 105 раз, но такое же быть не может)...

хотя если результат "VIEW" перенести в новую таблицу, и объединиться с ней - то проблем с задержкой нет

Последний раз редактировалось KBO; 11.02.2023 в 16:33.
KBO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввожу сначало 10 цифр по порядку и заполняю массив потом он сортируется и после стоит цикл вывода этих отсортированных чисел ROMAN_ShARP C# (си шарп) 4 05.03.2020 08:27
DBLookupComboBox и join –значения сначало пропадают, потом появляются KBO Помощь студентам 0 13.11.2018 02:00
Группировка значений по критерию и их объединение и запись в строку kwns Microsoft Office Excel 1 28.06.2018 23:37
Синтаксическое дерево (парсер) - сначала раскрываем модуль, потом перетаскиваем известное и неизвестное, потом решаем. skidline Помощь студентам 1 14.06.2013 20:16
Вычислить количество недель сначало года Alexandr- Помощь студентам 0 02.04.2013 15:22