Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: CL | DM;

Вниз

Помогите оптимизировать запрос   Найти похожие ветки 

 
MakNik ©   (2003-12-22 13:31) [0]

Помогите, плз., оптимизировать запрос:
Select Cr.*,SubDepartment.Name as SubDepartmentName, Sex.name as SexName
, Ps.Name as PostName, Ct.name as CategoryName , CH.Name As CHAESCategoryName, DT.Name as Dismissal_TypeName, Cr.DateEnd
from SubDepartment, Sex
, Cards Cr LEFT OUTER JOIN Category Ct ON Cr.ID_Category=Ct.ID,
Cards Cr1 LEFT OUTER JOIN Post Ps ON Cr1.ID_Post=Ps.ID,
Cards Cr2 LEFT OUTER JOIN CHAESCategory CH ON Cr2.ID_CHAESCategory=CH.ID,
Cards Cr3 LEFT OUTER JOIN Dismissal_Type DT ON Cr3.ID_Dismissal_Type=DT.ID

Where
(SubDepartment.ID=Cr.ID_SubDepartment)
and (Cr.ID="6D666DA9-D132-48A5-AECE-126D623050EB")
and (Sex.ID=Cr.Sex)
and (Cr.ID=Cr1.ID) and (Cr.ID=Cr2.ID) and (Cr.ID=Cr3.ID)


 
JibSkeart ©   (2003-12-22 13:44) [1]

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

вопрос в другом как ты хочешь его оптимизировать

что клиент долго рефрешит ??
если да то сколько записей ?


 
Johnmen ©   (2003-12-22 13:53) [2]

Если правильно въехал :)
Select Cr.*,SubDepartment.Name as SubDepartmentName, Sex.name as SexName
, Ps.Name as PostName, Ct.name as CategoryName , CH.Name As CHAESCategoryName, DT.Name as Dismissal_TypeName, Cr.DateEnd
from SubDepartment, Sex
, Cards Cr
LEFT JOIN Category Ct ON Cr.ID_Category=Ct.ID
LEFT JOIN Post Ps ON Cr.ID_Post=Ps.ID
LEFT JOIN CHAESCategory CH ON Cr.ID_CHAESCategory=CH.ID
LEFT JOIN Dismissal_Type DT ON Cr.ID_Dismissal_Type=DT.ID

Where
(SubDepartment.ID=Cr.ID_SubDepartment)
and (Cr.ID="6D666DA9-D132-48A5-AECE-126D623050EB")
and (Sex.ID=Cr.Sex)
and (Cr.ID=Cr1.ID) and (Cr.ID=Cr2.ID) and (Cr.ID=Cr3.ID)


 
MakNik ©   (2003-12-22 13:57) [3]


> JibSkeart ©

Выбирается каждый раз только одна запись. А время выполнения 1с. (но это еще при пустой базе)...


 
MV   (2003-12-22 14:00) [4]

Ну, судя по всему, у тебя все ID - первичные ключи, соотв-нно, индексированы. Попробу добавить "инверсный вход" - индекс по Cr.SEX. Мож, чуть быстрее будет. Ну, посмотри еще наличие индекса по полю внешнего ключа Cr.ID_SubDepartment
Ну, еще Left Join == Join (впрочем, дело вкуса)


 
Johnmen ©   (2003-12-22 14:04) [5]

>MV (22.12.03 14:00)
>Left Join == Join

Это как понимать ?


 
MV   (2003-12-22 14:07) [6]

Ох ты господи, сам офигел, что я тут написал...
И так:
Судя по всему, у тебя все ID - первичные ключи, соотв-нно, индексированы. Попробу добавить "инверсные входы" - индексы по внешним ключам на поля типа : Cr.SEX, Cr.ID_Category, Cr.ID_SubDepartment, Cr.ID_Post, Cr.ID_CHAESCategory, Cr.ID_Dismissal_Type и т.п. Это обычная практика.
Должно существенно ускорить ввыполнение запроса.


 
JibSkeart ©   (2003-12-22 14:09) [7]

а также можешь попробовать индекс сделать кластерным .


 
MV   (2003-12-22 14:16) [8]

Согласен.


 
DKS   (2003-12-22 16:35) [9]

Если это возможно, замени
left join
на
inner join


 
ЮЮ ©   (2003-12-23 03:34) [10]

Оптимизировать стуктуру. Вряд ли оптимально использовать в качестве первичного ключа полк VarChar(36).


 
Кщд   (2003-12-23 05:42) [11]

DKS (22.12.03 16:35) [9]
смысл?



Страницы: 1 вся ветка

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-63173
real_dimedrol
2004-01-10 17:49
2004.01.20
Virtual Listview


1-63176
tesseract
2004-01-10 14:01
2004.01.20
штрихкоды


1-63096
Goida
2004-01-08 14:58
2004.01.20
Работа с Office через ADO


4-63452
lex
2003-09-11 11:10
2004.01.20
Блокировать отключение монитора


14-63348
xman
2003-12-29 15:45
2004.01.20
Сетевые шахматы