Насколько эффективнее оставить предложение WHERE во втором SUB-SELECT. Работает в обоих направлениях, но я ищу наиболее эффективный способ с этим оператором SQL ...SQL SUB SELECTS и LEFT JOINS with WHERE Пункт
Существует много записей и значений для substr (FIELD_G, 10,3) в таблице 2 t2, поэтому я не уверен, что я должен фильтровать что во 2-м SUB-SELECT перед первым соединением?
Мой вопрос: Должен ли я фильтровать результаты во втором SUB-SELECT до СОЕДИНЕНИЯ или я должен исключить предложение WHERE (во втором SUB-SELECT), получить все и полагаться на LEFTJOIN, чтобы дать мне мои результаты ???
Если CNT равен 0 - Я до сих пор нуждаются в t1.FIELD_A, t1.FIELD_B, t1.FIELD_C, t1.FIELD_D поля должны быть возвращены ...
SELECT t1.FIELD_A, t1.FIELD_B, t1.FIELD_C, t1.FIELD_D, t2.CNT FROM (
SELECT FIELD_A, FIELD_B, FIELD_C, FIELD_D
FROM SCHEMA.TABLE_A
WHERE FIELD_A IN ('Z1','Z2','Z3','Z4','Z5','Z6','Z7','Z8','Z9','Z10','Z11','Z12','Z13','Z14','Z15','Z16','Z17','Z18','Z19','Z20','Z21','Z22')
) t1
LEFT JOIN
(
SELECT FIELD_A, COUNT(FIELD_A) AS CNT FROM (
SELECT substr(FIELD_G,10,3) AS FIELD_A
FROM SCHEMA.TABLE_B
WHERE substr(FIELD_G,10,3) IN ('Z1','Z2','Z3','Z4','Z5','Z6','Z7','Z8','Z9','Z10','Z11','Z12','Z13','Z14','Z15','Z16','Z17','Z18','Z19','Z20','Z21','Z22')
) GROUP BY FIELD_A
) t2
ON t1.FIELD_A = t2.FIELD_A
ORDER BY t1.FIELD_A
;
Вы всегда время оба запроса. –
Невозможно, чтобы любой, кто не имеет доступа к вашей базе данных и ее данным, может однозначно заявить, что одна версия запроса будет лучше или хуже. Сравните планы выполнения обоих запросов и (как предлагает @DanBracuk) время выполнения. Удачи. –
Что значит «более эффективный»? –