Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] насколько умён mssql? (http://forum.oszone.net/showthread.php?t=129609)

pva 23-01-2009 14:49 1016902

насколько умён 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)


Delirium 26-01-2009 01:42 1019452

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

pva 26-01-2009 08:27 1019580

как посмотреть в профайлере (есть ли чтение переменной)?

pva 26-01-2009 09:00 1019598

тыкнул "показать план запроса - всё", запрос:
Код:

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 1019627

вот и ответ на вопрос :) Не так уж он и умен :) протестировал, MSSQL повел себя также.

Amin 01-02-2009 00:49 1025858

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

pva 03-02-2009 09:25 1027984

Цитата:

Цитата Amin
Есть еще такая крайне позитивная команда, как EXPLAIN »

хде, если не трудно? я заблудился. У меня есть Ms SQL 2000 и MS SQL 2005, в хелпе не нашёл :(

Delirium 04-02-2009 02:05 1028950

pva, в SQL 2000 - Query Analiser - Вид есть опции отображать статистику и прочее, надо понаставить галок и запустить запрос. Он покажет полную статистику. Про Explain описано здесь

pva 05-02-2009 07:18 1029869

Цитата:

Цитата Delirium
Про Explain описано здесь »

УУУУ.... :( модераторы, кто может, поменяйте пожалуйста в названии темы mssql -> MS SQL, а то видимо непонятно как-то получается. Хотя вроде ветка форума как раз про микрософтовский sql *SCRATCH*


Время: 13:25.

Время: 13:25.
© OSzone.net 2001-