Войти

Показать полную графическую версию : [решено] насколько умён mssql?


pva
23-01-2009, 14:49
Поймёт ли сервер, что следующее выражение очень сильно упрощается или будет на каждой строчке раз проверять @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)

Delirium
26-01-2009, 01:42
Мне кажется, будет все таки идти проверка на null в каждом случае. В MS SQL есть Profiler, им можно было бы отследить действия сервера по обработке запроса. Не знаю, есть ли такое В MySQL .

pva
26-01-2009, 08:27
как посмотреть в профайлере (есть ли чтение переменной)?

pva
26-01-2009, 09:00
тыкнул "показать план запроса - всё", запрос:

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, причём идёт чтение из таблицы :(

Delirium
26-01-2009, 09:35
вот и ответ на вопрос :) Не так уж он и умен :) протестировал, MSSQL повел себя также.

Amin
01-02-2009, 00:49
Есть еще такая крайне позитивная команда, как EXPLAIN. Выводит план выполнения запроса + количество затрагиваемых на каждом шаге объектов. При тормозах на конкретном запросе - это первое, чем необходимо воспользоваться.

pva
03-02-2009, 09:25
Есть еще такая крайне позитивная команда, как EXPLAIN »
хде, если не трудно? я заблудился. У меня есть Ms SQL 2000 и MS SQL 2005, в хелпе не нашёл :(

Delirium
04-02-2009, 02:05
pva, в SQL 2000 - Query Analiser - Вид есть опции отображать статистику и прочее, надо понаставить галок и запустить запрос. Он покажет полную статистику. Про Explain описано здесь (http://www.mysql.ru/docs/man/EXPLAIN.html)

pva
05-02-2009, 07:18
Про Explain описано здесь »
УУУУ.... :( модераторы, кто может, поменяйте пожалуйста в названии темы mssql -> MS SQL, а то видимо непонятно как-то получается. Хотя вроде ветка форума как раз про микрософтовский sql *SCRATCH*




© OSzone.net 2001-2012