Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Row_Number и общее количество строк  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
Добрый день! Подскажите пожалуйста, как лучше реализовать.
Есть запрос который реализует пейджинг, с помощью Row_number Пример
select *
from
(
select
Row_number() over(order by id desc) as 'row',
id
from table WITH (NOLOCK)
where кучу условий
) as t
where условие для пейджинга

Для определения общего количества строк приходится использовать count со всеми условиями еще раз
Возможно ли как-то объединить два запроса в один.
В принципе последнее значение Row_number() это и есть общее количество строк.
Спасибо, за любые идеи
14 фев 12, 12:53    [12087851]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
НесчастнаяЖертваБана
Member

Откуда: (((@)))
Сообщений: 27
RasimS
Добрый день! Подскажите пожалуйста, как лучше реализовать.
Есть запрос который реализует пейджинг, с помощью Row_number Пример
select *
from
(
select
Row_number() over(order by id desc) as 'row',
id
from table WITH (NOLOCK)
where кучу условий
) as t
where условие для пейджинга

Для определения общего количества строк приходится использовать count со всеми условиями еще раз
Возможно ли как-то объединить два запроса в один.
В принципе последнее значение Row_number() это и есть общее количество строк.
Спасибо, за любые идеи


Не понял нифига... А чем select count(*) from table WITH (NOLOCK)
where кучу условий не подошёл для выяснения количества строк?!
14 фев 12, 12:56    [12087880]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
LeadyGaaga
Member

Откуда:
Сообщений: 37
Не очень хорошая, но есть :
 COUNT(*) OVER() 
14 фев 12, 12:56    [12087882]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
netivan
Member

Откуда:
Сообщений: 8768
RasimS,

row_number() вам сильно затормозит все. Имейте ввиду.
14 фев 12, 12:57    [12087889]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
НесчастнаяЖертваБана
RasimS
Добрый день! Подскажите пожалуйста, как лучше реализовать.
Есть запрос который реализует пейджинг, с помощью Row_number Пример
select *
from
(
select
Row_number() over(order by id desc) as 'row',
id
from table WITH (NOLOCK)
where кучу условий
) as t
where условие для пейджинга

Для определения общего количества строк приходится использовать count со всеми условиями еще раз
Возможно ли как-то объединить два запроса в один.
В принципе последнее значение Row_number() это и есть общее количество строк.
Спасибо, за любые идеи


Не понял нифига... А чем select count(*) from table WITH (NOLOCK)
where кучу условий не подошёл для выяснения количества строк?!

Он подходит, но просто лушний запрос. Быть можно сразу можно при формировании row_number посчитать количество строк по условию
14 фев 12, 12:58    [12087897]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
RasimS,

можно добавить c = count(*) over(), но посмотрите на план, может получиться швах =(
14 фев 12, 12:58    [12087904]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
netivan
RasimS,

row_number() вам сильно затормозит все. Имейте ввиду.

Альтернатива?
14 фев 12, 12:58    [12087905]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
Спасибо за наводку с Count(*) OVER()
План действительно немного ухудшился. Будем разбираться. Спасибо
14 фев 12, 13:02    [12087944]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
RasimS
netivan
RasimS,

row_number() вам сильно затормозит все. Имейте ввиду.

Альтернатива?

Если правильно использовать, ничего сильно не затормозит.
14 фев 12, 13:18    [12088083]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
netivan
Member

Откуда:
Сообщений: 8768
SomewhereSomehow,

ну как его не используй более 1000 записей беда.Вроде бы много где об этом было написано. Или есть секрет функции?
14 фев 12, 13:22    [12088118]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
netivan,

Секретов никаких нет, нужен правильный индекс и правильно, написать конструкцию.
Вот тут гляньте Denis Reznik - SQL Server Denali – Paging. Особенно вторую часть.
14 фев 12, 13:26    [12088169]     Ответить | Цитировать Сообщить модератору
 Re: Row_Number и общее количество строк  [new]
netivan
Member

Откуда:
Сообщений: 8768
SomewhereSomehow,

спасибо,изучим. Вроде индексы были "правильные",хотя посмотреть уже нет возможности.
14 фев 12, 13:48    [12088365]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить