2016-05-19 2 views
0

Может ли кто-нибудь помочь мне изменить sql ниже, чтобы заставить его работать быстрее? Благодарю.Как я могу сделать этот SELECT CASE быстрее?

SELECT DISTINCT B.CLT_NBR , 
     CASE 
      WHEN B.CLT_NBR IN (SELECT CLT_NBR FROM A) THEN 'YES' 
      ELSE 'NO' 
     END AS CHECK 
FROM B 
+1

ВЕРНУТЬСЯ В ЛЕВОЙ ВСТУПЛЕНИЕ. – jarlh

+0

Есть ли указатель на CLT_NBR для каждой таблицы? –

ответ

2

Используйте левое соединение вместо подзапроса:

SELECT DISTINCT B.CLT_NBR , 
     CASE 
      WHEN A.Id IS NOT NULL THEN 'YES' 
      ELSE 'NO' 
     END AS CHECK 
FROM B 
LEFT JOIN A ON(B.CLT_NBR = A.CLT_NBR) 

Примечание: вместо A.id я использовал вам нужно использовать первичный ключ в.

+0

Почему бы просто не использовать 'A.CLT_NBR'? И да, и не нужно заменять :) – sagi

+0

... или использовать НЕ НУЛЛ вместо IS NULL ... Спасибо за уловку. что касается вашего вопроса, просто личное предпочтение. –

Смежные вопросы