насколько умён mssql?
Поймёт ли сервер, что следующее выражение очень сильно упрощается или будет на каждой строчке раз проверять @parentId is null и @like is null?
Код:
declare @parentId integer; -- сейчас @parentId = null;
declare @like varchar(10); -- сейчас @like = null
select top 11
'waresGroup.parentId' as next,
str(id,8,0) as id,
'1.bmp' as image,
name
from
waresGroup
where
((@parentId is null and parentId is null) or parentId=@parentId) and enabled=1
and (@like is null or name like @like)
union
select top 11
'' as next,
'W' + str(id,8,0),
'2.bmp' as image,
name
from
wares
where
((@parentId is null and waresGroupId is null) or waresGroupId=@parentId) and enabled=1
and (@like is null or name like @like)
|
Мне кажется, будет все таки идти проверка на null в каждом случае. В MS SQL есть Profiler, им можно было бы отследить действия сервера по обработке запроса. Не знаю, есть ли такое В MySQL .
|
как посмотреть в профайлере (есть ли чтение переменной)?
|
тыкнул "показать план запроса - всё", запрос:
Код:
declare @val1 integer;
select top 20 id from table1 where (@val is null) or code<>'123'
показал, что (@val is null) or code<>'123' выполняется дольше, чем select top 20 id, причём идёт чтение из таблицы :(
|
вот и ответ на вопрос :) Не так уж он и умен :) протестировал, MSSQL повел себя также.
|
Есть еще такая крайне позитивная команда, как EXPLAIN. Выводит план выполнения запроса + количество затрагиваемых на каждом шаге объектов. При тормозах на конкретном запросе - это первое, чем необходимо воспользоваться.
|
Цитата:
Цитата Amin
Есть еще такая крайне позитивная команда, как EXPLAIN »
|
хде, если не трудно? я заблудился. У меня есть Ms SQL 2000 и MS SQL 2005, в хелпе не нашёл :(
|
pva, в SQL 2000 - Query Analiser - Вид есть опции отображать статистику и прочее, надо понаставить галок и запустить запрос. Он покажет полную статистику. Про Explain описано здесь
|
Цитата:
Цитата Delirium
Про Explain описано здесь »
|
УУУУ.... :( модераторы, кто может, поменяйте пожалуйста в названии темы mssql -> MS SQL, а то видимо непонятно как-то получается. Хотя вроде ветка форума как раз про микрософтовский sql *SCRATCH*
|
Время: 13:25.
© OSzone.net 2001-