Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странное поведение выражения с TOP, съедает все русурсы 
:(
    Опции темы
fvoice
Дата 26.7.2010, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.4.2009

Репутация: нет
Всего: нет



Приветствую,

не выполняется следующий запрос на серваке:
Код

select TOP 18 id, BIN, RNN, Names, JuridicalAddress, IsProducer, IsConsumer, row from 
(select id, BIN, RNN, Names, JuridicalAddress, IsProducer, IsConsumer, ROW_NUMBER() OVER(ORDER BY Id) as row 
from companies where id not in ( select distinct c.id from companies c 
inner join purchaseplans p on p.companyid = c.id where (p.createddate < '12.31.2010' and p.createddate > '01.01.2010'))) as q 
where q.row > 0


во время выполнения System Cache достигает 14 Гб, PageFile тоже порядка 14 Гб, средняя загрузка по 16 процам 30%, но запрос таки не возвращает результатов, просто висит.

в то же время такой же запрос, но без TOP 18 выполняется за доли секунды, и возвращает ~1600 строк

На локальной же машине, на тестовой БД(которая кончено в разы меньше), запрос тоже выполняется доли секунды, что с TOP, что без него..

В чем может быть причина столь странного поведения SQL сервака?
PM MAIL   Вверх
Zloxa
Дата 26.7.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



1. Какой смысл в TOP без order by?
2. При каком раскладе может не выполниться условие  q.row > 0. Т.е. при каком раскладе ROW_NUMBER() может дать не положительные числа?

А вообще ответ на Ваш вопрос кроется в плане запроса, его отличии от плана запроса без top, который Вы не привели.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
fvoice
Дата 26.7.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.4.2009

Репутация: нет
Всего: нет



PurchasePlans содержит порядка 5 млн записей,
если смотреть Execution Plan то Clustered Index Scan занимает 100%
PM MAIL   Вверх
Zloxa
Дата 26.7.2010, 09:24 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



очень информативно. smile 
При данном стечении обстоятельств, однозначно можно утверждать что ошибка в 17й строке smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
fvoice
Дата 26.7.2010, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.4.2009

Репутация: нет
Всего: нет



а разве "OVER(ORDER BY Id)" не сортирует по id?

планы запросов с TOP и без TOP значительно отличаются по количеству "ходов", но время-затраты не сильно отличаются:

у запроса без TOP Clustered Index Scan для PurchasePlans  - 96%(против 100% с TOP), Hash Match и Parallelism по 1%, куда делись еще 2 процента непонятно.

Добавлено через 1 минуту и 39 секунд
я пишу информацию которую могу получить, я слабо знаком со средствами для анализа запросов, поэтому буду рад если вы подскажите как мне провести анализ, или на что обратить внимание
PM MAIL   Вверх
Zloxa
Дата 26.7.2010, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



Цитата(fvoice @  26.7.2010,  09:31 Найти цитируемый пост)
 "OVER(ORDER BY Id)" не сортирует по id?

нет
Вернее сервер может быть и отсортирует, но вовсе не обязан возвращать результат в этом порядке.
Цитата(fvoice @  26.7.2010,  09:31 Найти цитируемый пост)
планы запросов с TOP и без TOP значительно отличаются

это все и объясняет!
это и есть ответ на Ваш вопрос.


Это сообщение отредактировал(а) Zloxa - 26.7.2010, 09:34


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.