Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
GByte
- Сообщения: 29
- Зарегистрирован: 19 янв 2006, 11:31
Сообщение
GByte » 09 фев 2006, 09:17
Есть запрос (не строгий - меняется как параметр функции, не ХП).
Нужно считать, напр. 100 строк (из начала или из середины или из конца - в зависимости от ситуации) и попутно определить общее кол-во строк в результате запроса.
Конечно самый простой способ грубо фетчить все строки, но при большом кол-ве данных это боольшие грабли.
подскажите решение, плииз.
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 09 фев 2006, 10:31
Нет решения. Особенно если надо получить строки из произвольного места "в зависимости от ситуации".
Хотя... можно поменять психологию пользователя. Вдолбить ему-таки в голову что "какие-нибудь" данные ему нафиг не нужны как и общее количество выбранных строк.
-
GByte
- Сообщения: 29
- Зарегистрирован: 19 янв 2006, 11:31
Сообщение
GByte » 09 фев 2006, 10:45
Я веб-интерфейс к БД делаю... ну и соответственно когда необходимо выводить боольшие таблици хотел сделать разделение на страници, для чего и необходимо кол-во строк+выборка строк из произвольного места...
-
GByte
- Сообщения: 29
- Зарегистрирован: 19 янв 2006, 11:31
Сообщение
GByte » 10 фев 2006, 07:03
Ничего не мешает
только никак найти немог....
Осталось найти элегантное решение подсчета кол-ва записей...
СпасибО!
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 10 фев 2006, 08:18
Выбирай все записи сразу, создавай все страницы сразу и потом выдавай пользователю из кэша не обращаясь к БД.
-
GByte
- Сообщения: 29
- Зарегистрирован: 19 янв 2006, 11:31
Сообщение
GByte » 10 фев 2006, 09:56
НА создание всех страниц тоже время будет уходить... да и пока пользователю понадобится следующая страница кто-то уже может внести изменения...
Буду искать другой выход.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 10 фев 2006, 10:14
да и пока пользователю понадобится следующая страница кто-то уже может внести изменения
first/skip это ограничение передачи данных наклиента, а не прерывание выполнения запроса.
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 10 фев 2006, 10:24
GByte писал(а):НА создание всех страниц тоже время будет уходить... да и пока пользователю понадобится следующая страница кто-то уже может внести изменения...
Время будет уходить не больше чем на запрос с first-skip, как тебе уже сказали. Зато следующая страница не потребует обращения к базе. Кроме того ты можешь (я надеюсь) выдать первую страницу сразу после формирования (и на ней ссылку просто "на следующую") а кэш набить в фоновом режиме.
-
Slava Ekimov
- Сообщения: 44
- Зарегистрирован: 26 окт 2004, 14:30
Сообщение
Slava Ekimov » 10 фев 2006, 18:39
kdv писал(а):first/skip это ограничение передачи данных наклиента, а не прерывание выполнения запроса.
Как-то ты двусмысленно написал, как будто из одного запроса можно нестолько раз получить результат.