Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени / 8 сообщений из 8, страница 1 из 1
18.03.2002, 14:42
    #32025559
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Приветствую всех.

Создал таблицу:

CREATE TABLE [HUGE] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[value] [varchar] (256) NULL
)
GO

Заполнил тестовыми данными:

set nocount on
declare @i int, @value char(256)
SET @i = 0
while(@i < 100x000)
begin
SET @value = CAST(newid() AS char(36))
INSERT INTO HUGE (value) VALUES (@value)
SET @i = @i + 1
end
GO

Далее запустил запросы:

SELECT * FROM HUGE WHERE id < 3423 AND id > 3023
------------------------------------------------
Table 'HUGE'. Scan count 1, logical reads 3484, physical reads 0, read-ahead reads 0.
SQL Server Execution Times: CPU time = 141 ms, elapsed time = 162 ms.
SQL Server Execution Times: CPU time = 141 ms, elapsed time = 163 ms.
SQL Server Execution Times: CPU time = 141 ms, elapsed time = 163 ms.
SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms.

SELECT * FROM HUGE WHERE id > 3023 AND id < 3423
------------------------------------------------
Table 'HUGE'. Scan count 1, logical reads 3484, physical reads 0, read-ahead reads 0.
SQL Server Execution Times: CPU time = 172 ms, elapsed time = 225 ms.
SQL Server Execution Times: CPU time = 172 ms, elapsed time = 232 ms.
SQL Server Execution Times: CPU time = 172 ms, elapsed time = 232 ms.
SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms.

Почему имеем такое большое различие во времени выполнения запросов и требуемых ресурсах?

Благодарю
...
Рейтинг: 0 / 0
18.03.2002, 14:45
    #32025560
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Поправка: 100x000 следует читать как 100000, конечно. Прошу прощения.
...
Рейтинг: 0 / 0
18.03.2002, 17:15
    #32025582
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Наверное, потому что первый запрос возвращает всего 188 записей, а второй 99798 записей.
...
Рейтинг: 0 / 0
19.03.2002, 07:25
    #32025628
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Приветствую всех

2Garya: Вы, вероятно, будете удивлены, но оба запроса эквивалентны и возвращают одну и ту же выборку (399) записей.

Удачи
...
Рейтинг: 0 / 0
19.03.2002, 17:41
    #32025743
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Пардон, не разглядел чехарду...
...
Рейтинг: 0 / 0
19.03.2002, 20:32
    #32025749
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Моя точка зрения - никак не влияет.
Я некоторое время поэкспериментировал с приведенным Вами скриптом - и, в общем-то, все вписывается в предсказанные теорией рамки. Всяких дурацких пользователей, правда, пришлось выкинуть для чистоты эксперимента и сказать, что сервер на профилактике. Значит, СPU Time было строго 150 - 151 ms независимо с клиента это делать или на самом сервере. Elapsed time гуляло от 161 ms до 416 ms, ну это понятно. Юзеры от нечего делать пошли порнуху качать и просадили сетку.
Почему в Вашем случае CPU Time вело себя, как неразборчивая женщина, я не знаю. Может, нагрузка менялась. Сомневаться в порядочности GetThreadTimes() не приходится, если только у Вас на SQL Server не включены фибры. Либо он неотсервиспачен и тогда при определенном стечении обстоятельств (за время запроса пришло много новых коннектов, большую часть которых взяли из пула) master..sysprocesses.CPU может провраться (см. Q309377). Но это нужно просто поставить SP2 и не испытывать себя на везучесть.
...
Рейтинг: 0 / 0
19.03.2002, 20:38
    #32025750
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Да... Никогда бы не подумал, что это существенно. Притом я всегда использую второй синтаксис. Интересно было бы попробовать выборку из самого начала [1,400] и конца [999900,100000].
"А если слон на кита нападет, кто кого сборет?" O.Кассиль.
...
Рейтинг: 0 / 0
20.03.2002, 11:47
    #32025825
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени
Лично я тоже разницы не заметил. Может это у тебя случайность? Кстати, почему ты в подобных случаях не пользуешся

SELECT * FROM HUGE WHERE id BETWEEN 3023+1 AND 3423-1

Из эстэтических соображений или принципы не позволяют?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Каким образом порядок критериев в предложении WHERE влияет на скорость выполнени / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]