2015-03-16 2 views
-2

Я пытаюсь сделать следующий SQL более эффективным, но еще не достиг успеха, кроме того, что у меня есть. Это работает примерно через 2 минуты, начиная с 800 строк. Я не могу использовать временную таблицу. Какие-либо предложения?Стандартизировать SQL несколько AND/Where

Select POP.Account_Number, IP.IP_Id_Src, 
POP.Ip_Name_Full, INFO_Default_Hmp.Date_Solicitation, 
INFO.BAL_PRIN_AMT, UDD.USER_DEFINED_5V_14, 
POP.Process_Stop_Code, POP.Mail_Code 

FROM POP, IP, INFO, INFO_Default_Hmp, 
INFO_Participation_Item, UDD 

WHERE (INFO.Account_Number=POP.Account_Number 
AND INFO.Appl_Id=POP.Appl_Id 
AND INFO.Bank_Number=POP.Bank_Number 
AND INFO_Default_Hmp.Bank_Number=POP.Bank_Number 
AND INFO_Default_Hmp.Account_Number=POP.Account_Number 
AND INFO_Default_Hmp.Appl_Id=POP.Appl_Id 
AND POP.Bank_Number=INFO_Participation_Item.Bank_Number 
AND POP.Appl_Id=INFO_Participation_Item.Appl_Id 
AND POP.Account_Number=INFO_Participation_Item.Account_Number 
AND INFO_Participation_Item.Involved_Party_Id_Investor=IP.Involved_Party_Id_Investor 
AND UDD.Account_Number=POP.Account_Number 
AND UDD.Bank_Number=POP.Bank_Number 
AND POP.Appl_Id=UDD.Appl_Id) 
AND ((POP.Appl_Id='FL' 
AND POP.Account_Status_Code='A' 
AND INFO.Bal_Prin_Amt>0 
AND UDD.User_Defined_5v_14='S1')) 
+1

А вы посмотрите на план выполнения? – DrCopyPaste

+0

Ваше заявление объединяет 7 таблиц и применяет некоторые фильтры. Используйте операторы 'JOIN' для соединений и оставляйте только фильтры в операторе' WHERE'. Это не заставит его работать быстрее, но это сделает его доступным для чтения. После этого убедитесь, что столбцы объединения и фильтрации индексируются - ничто не влияет на производительность базы данных, а также индексирование –

+0

Какая база данных вы используете, каков план выполнения, сколько данных есть в исходных таблицах? У вас есть индексы в исходных таблицах? –

ответ

0

Максимальное использование индексов для столбцов, которые вы часто фильтруете и объединяете, особенно с полями int.

Кроме того, дайте нам знать, какой RDBMS вы используете, добавив, что тег на свой пост

+0

Спасибо. Я проверю индексы на разных таблицах. К несчастью, поскольку эти таблицы используются несколькими пользователями для большого количества потребностей в отчетах, моя способность изменять их может быть ограничена. – Daoxianmom

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