Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
lifeissuxx
Зарегистрирован: 27.02.2006 Сообщения: 6 Откуда: Новосибирск
|
Добавлено: Пн Фев 27 2006 10:11 Заголовок сообщения: вывод SQL запроса частями |
|
|
Нужна помощь! делаю веб-интерфейс БД. требуется вывод огромного количества информации (порядка 10000 строк). так вот мало того, что "Maximum execution time of 30 seconds exceeded" и более 5000 строк он не успевает обработать, так еще и для глаз неудобно пролистывать по 5 минут в поисках ныжного фрагмента. Хочу сделать постраничный вывод, но средствами SQL (опять же из-за "Maximum execution time"). Не могу разобраться с LIMIT'ом в SELECT'е. точнее ограничить могу, а вот чтобы остальное он выводил... (чтоб выводил допустим 1000 строк, второй кусок запроса выводил с 1001 по 2000 строку...) База постоянно пополняется и данные набираются оттуда не попорядку, поэтому выборка по "порядковому номеру" не спасает помогите кто чем может! заранее спасибо! |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пн Фев 27 2006 13:59 Заголовок сообщения: Re: вывод SQL запроса частями |
|
|
lifeissuxx писал(а): | ...Не могу разобраться с LIMIT'ом в SELECT'е. точнее ограничить могу, а вот чтобы остальное он выводил... (чтоб выводил допустим 1000 строк, второй кусок запроса выводил с 1001 по 2000 строку...) База постоянно пополняется и данные набираются оттуда не попорядку, поэтому выборка по "порядковому номеру" не спасает помогите кто чем может! заранее спасибо! |
Делал такое. В двух проектах. Один даже на америкосовский рынок. Более того это не то, что бы "делается" а именно ГРАМОТНЫЙ подход к данной проблеме...
как решить...
очень просто:
1) Вам нужно иметь на клиенте данные по сортируемым полям
2) Вам нужно иметь поле с уникальными данными в одном поле...
смысл следующий...
Вы ВСЕГДА можете задать сиквол запрос типа "а теперь БД дай всё что далее этой записи (указываете поля сортировки с учётом направления сортировки и правил сортировки, и с права дополняете уникальным полем) и кол-вом столько то". И будет Вам счастье. Уникальное поле - думаю Вы поняли для чего - для навигации в случае полного совпадения данных из полей сортировки.
Плюсы...
1) Клиент ВСЕГДА видит свежие данные..
2) По сети гоняеться только НЕОБХОДИМЫЕ для обработки данные.
3) Простота алгоритма.
Минусы...
1) Если нет индексов по полям сортировки - то ожидайте тормозов (замечу: Оракл кстати справляеться на ура)
2) Избегайте уникальности данных - конструкции вида distinct
с уважением
(круглый) |
|
Вернуться к началу |
|
|
C37
Зарегистрирован: 09.03.2005 Сообщения: 311
|
Добавлено: Пн Фев 27 2006 17:36 Заголовок сообщения: |
|
|
Создаем курсор, затем читаем n записей, потом еще n записей, потом остаток. |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Вт Фев 28 2006 13:41 Заголовок сообщения: |
|
|
по-моему, что-то такое делается:
после SQL запроса просто пишем LIMIT 1001, 2000
что означает, - выводить результат с 1001 строки по 2000.
а сами величины 1001 и 2000 берем из запускающего запрос приложения.
Пишите на PHP? |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Вт Фев 28 2006 19:14 Заголовок сообщения: |
|
|
C37 писал(а): | Создаем курсор, затем читаем n записей, потом еще n записей, потом остаток. |
круто всё работает...до той поры, пока Вася пупкин между 3 и 4 Вашем сканирование грохнул первые n записей...Ваши действия ???
пользователь будет рад опять увидеть "верхнии" записи которые он пролистал...
ну прям детский сад...
удачи Вам
(круглый) |
|
Вернуться к началу |
|
|
|