Нужно руководство, чтобы упростить этот запрос - PullRequest
1 голос
/ 11 апреля 2019

У нас огромный запрос со многими условиями.Тем не менее, мы считаем, что некоторые из условий не имеют отношения к делу. Пожалуйста, дайте мне знать, если where здесь можно удалить

. Ниже приведен фрагмент огромного запроса (подзапроса) с * 1004.* clause

SELECT f1,  ... f10 
FROM A
JOIN
SELECT f1, f2 ... f10
FROM B where PROC_DT IN (SELECT PROC_DATE FROM C)
ON A.ID = B.ID
WHERE ISNOTNULL(PROC_DT)

Я думаю, что запрос уже проверит PROC_DATE при получении данных из таблицы B. Поэтому мы можем удалить здесь предложение where.

Может кто-нибудь подтвердить мои выводы

1 Ответ

1 голос
/ 11 апреля 2019

да, вы правы, потому что в нем не может быть ноль.Вместо этого я бы использовал внутреннее соединение, в некоторых случаях оно будет быстрее.

SELECT f1,  ... f10 
FROM A
JOIN B ON A.ID = B.ID
join (SELECT DISTINCT PROC_DATE FROM C) AS X ON B.PROC_DT = X.PROC_DATE
...