Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизПомогите оптимизировать запрос Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c