Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / почему запрос так долго работает? / 6 сообщений из 6, страница 1 из 1
11.09.2002, 12:57:38
    #32049655
pvnic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему запрос так долго работает?
SELECT TOP 1 moment, start FROM quotes q, indexes i
WHERE ((DATEDIFF( DAY , q.moment, '2002-08-28 15:24:00') < 1)AND (i.i_symbol= 'LUKOY') AND (i.id=q.i_id)) ORDER BY q.moment

эт все работает порядка 0.6-.9 секунды, в чем причина?
на страничке может быть до 100 подобных вызовов, соотв. 1.5 минуты ждать неинтересно...
...
Рейтинг: 0 / 0
11.09.2002, 13:05:13
    #32049661
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему запрос так долго работает?
Код: plaintext
1.
2.
3.
SELECT TOP  1  moment, start
FROM quotes q inner join indexes i on i.id=q.i_id
WHERE ((DATEDIFF( DAY , q.moment, '2002-08-28 15:24:00') =  1 )AND (i.i_symbol= 'LUKOY'))
--ORDER BY q.moment 
...
Рейтинг: 0 / 0
11.09.2002, 13:06:28
    #32049662
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему запрос так долго работает?
прошу прощения
Код: plaintext
1.
2.
3.
SELECT TOP  1  moment, start
FROM quotes q inner join indexes i on i.id=q.i_id
WHERE ((DATEDIFF( DAY , q.moment, '2002-08-28 15:24:00') =  0 )AND (i.i_symbol= 'LUKOY'))
--ORDER BY q.moment 
...
Рейтинг: 0 / 0
11.09.2002, 13:10:25
    #32049665
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему запрос так долго работает?
= 0 быстрее, чем < 1
без join происходит полная конкатенация таблиц, после чего накладывается условие where
...
Рейтинг: 0 / 0
11.09.2002, 13:20:14
    #32049669
pvnic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему запрос так долго работает?
пасиб, вроде быстрее...
...
Рейтинг: 0 / 0
11.09.2002, 14:01:08
    #32049697
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему запрос так долго работает?
Кроме, того при DATEDIFF( ) не будут использоватся индекс по полю moment (если он увас есть).
Поэтому я предпочитаю запросы вида

WHERE q.moment BETWEEN '2002-08-27 15:24:00' AND '2002-08-28 15:24:00'
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / почему запрос так долго работает? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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