Производительность

Модераторы: kdv, CyberMax

Ответить
AndrewVL
Сообщения: 33
Зарегистрирован: 24 авг 2005, 16:14

Производительность

Сообщение AndrewVL » 12 мар 2009, 11:40

Привет.

Такая непонятка образовалась.
Есть запрос:

Код: Выделить всё

SELECT sum(case when sv.mark_id = 6 then 1 else 0 end) as NEBIL
from SP_PROPUSK
 left join sr on sr.lesson_type_id = SP_PROPUSK.lesson_type_id
                      and sr.datee between  :Param_0_  and  :Param_1_
                      and sr.disciplina_id =  :Param_2_ 
left join sv on sv.sr_id = sr.c
                     and sv.student_id =  :Param_3_ 
where SP_PROPUSK.propusk_prichina_id =  :Param_4_
с параметрами

PARAM_0_ = 24.02.2009
PARAM_1_ = 27.02.2009
PARAM_2_ = 5
PARAM_3_ = 10393
PARAM_4_ = 1010

чтений по таблице SV 119

а с параметрами
PARAM_0_ = 09.10.2008
PARAM_1_ = 09.10.2008
PARAM_2_ = 5
PARAM_3_ = 10393
PARAM_4_ = 1010

чтений по таблице SV 61119

И вопрос. Почему так? параметры практически идентичны.\Непонимаю. Проясните плиз :-)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Производительность

Сообщение kdv » 12 мар 2009, 13:25

И вопрос. Почему так?
если бы данные за период и т.п. были идентичны, то было бы все одинаково.
А так - данные разные, ключи в индексах разные, и результат другой, и кол-во чтений другое.

p.s. форматируйте код и обрамляйте его кнопкой Code !

AndrewVL
Сообщения: 33
Зарегистрирован: 24 авг 2005, 16:14

Re: Производительность

Сообщение AndrewVL » 12 мар 2009, 13:31

Во втором случае в таблице sr небыло данных удовлетворяющих условию.

тогда вопрос - почему в таблице SV получилось 61119 чтений?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: Производительность

Сообщение WildSery » 12 мар 2009, 13:35

Приведи планы и статистику выполнения.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Производительность

Сообщение kdv » 12 мар 2009, 19:32

тогда вопрос - почему в таблице SV получилось 61119 чтений?
вырезаешь из запроса кусок, в котором выбираются данные только из sv, добавляешь "внешние" условия,
смотришь план. Сравниваешь план для этой таблицы с планом исх. запроса.
Выполняешь запрос с тем же параметром. смотришь сколько чтений, и т.д.

Пока что вопрос звучит как "почему у меня получилось число 13, ну почему???". А почему должно быть не 13, а 21, например?

Ответить