|
|
|
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
|
|||
|---|---|---|---|
|
#18+
авторПотому что речь идёт о транспорте между СУБД и клиентом и о том, что это узкое место в системе... Что есть клиент в вашем понимании? Для меня клиент в вашем случае, это прослойка (звено) между Сервером БД и Internet Сервером ( IIS ). При таком раскладе клиент находится в пределах одной ЛВС (10 -100 Mb/sec) с сервером БД. Поэтому мне не понятны ваши сетования про узкое место. Не верю, что это м.б. узким местом. Сегодня как вы совершенно справедливо заметили, многие производители СУБД учитывают в своих продуктах особенности работы с данными через Internet. Честь им и хвала за это. авторУсловия - есть таблица 7 колонок. 1 колонка - первичный ключ. Надо выводить данные постранично с возможностью сортировки по всем столбцам. Угу. Тоже имеется таблица с чуть большим кол. полей - "Карточка пациента" Задача требуется найти какую-то из них. Пути решения: - Вывалить весь список на клиента, и пусть он потом в стиле FoxPro гоняет скролингом вверх-вниз или постарнично, ищет кого ему надо. - Ни в коем случае не выдавать список в "сыром" виде. Заставляем пользователя предварительно задать условия для отбора из БД. При поиске карточки выводится форма запроса, в которой пользователь указывает нужные параметры (Фамилия или её часть - обязательое условие). Ставим ограничение на кол. строк которые могут быть отобраны по заданным условиям. Допустим это число = 50. Если результат возвращает список более чем из 50 строк, то просим уточнить условия. Думаю, что мне не надо объяснять вам, как узнать какое кол. может вернуть запрос. Для того что бы предметно что-то обсуждать по данному поводу, необходимо знать полные условия задачи , если их нет, то каждый остается при своем мнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 12:58 |
|
||
|
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
|
|||
|---|---|---|---|
|
#18+
Во-первых, есть куча реальных приложений, когда надо вытаскивать именно N строк начиная с M, никоим образом не относящихся к вебу, например, стандартизованные печатные формы документов. Так что понимание необходимости постраничного вывода, наверное, не должно являться предметом обсуждения. Во-вторых, всегда можно сделать что-то типа set rowcount 10 select id_XXX from XXX where id_XXX > Get_id_XXX(2) order by id_XXX Здесь Get_id_XXX - некая (не обязательно арифметическая) зависимость первичного ключа от количества уже возвращенных записей. Собственно, сюда Вам и надо рыть, то есть, изменить постановку: возвращать не 10 записей начиная с 3-й, а возвращать 10 записей, у которых id_XXX больше, чем у 2-й. В-третьих, цена реализации и использования top и limit может быть выше, чем даже у пары запросов через временную табличку. Это касается ВСЕХ серверов БД, а не только тех, что здесь перечислены, тех, где это реализовано или тех, где это не реализовано. Прежде всего это определяется структурой раздела order by. Так что я бы предложил наоборот, все top (верхнего уровня) и limit заменить на set rowcount и проанализировать их выполнение. Одно дело - короткий и красивый запрос, совершенно другое - как он работает в реальности. Кстати, ощутимая часть вопросов на форуме в той или иной степени касается желания написать некий запрос без подзапросов или ряд запросов свернуть в один запрос. У меня был не один десяток ситуаций, когда деление запроса на несколько более мелких с использованием временных таблиц на порядок повышало скорость работы (только SELECT + INSERT во временные таблицы). Тем более в случае вывода результатов в веб с возможностью заказной сортировки пользователем, когда можно такой порядок в order by задать (например, через case), что top и limit окажутся просто неподъемными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 17:07 |
|
||
|
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
|
|||
|---|---|---|---|
|
#18+
авторВо-первых, есть куча реальных приложений, когда надо вытаскивать именно N строк начиная с M, никоим образом не относящихся к вебу, например, стандартизованные печатные формы документов. Так что понимание необходимости постраничного вывода, наверное, не должно являться предметом обсуждения. Вообще-то предметом обсуждения является использование для этого сервера, а не клиента. авторизменить постановку: возвращать не 10 записей начиная с 3-й, а возвращать 10 записей, у которых id_XXX больше, чем у 2-й. Идея хорошая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 18:02 |
|
||
|
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов Кстати, ощутимая часть вопросов на форуме в той или иной степени касается желания написать некий запрос без подзапросов или ряд запросов свернуть в один запрос. У меня был не один десяток ситуаций, когда деление запроса на несколько более мелких с использованием временных таблиц на порядок повышало скорость работы (только SELECT + INSERT во временные таблицы). Тем более в случае вывода результатов в веб с возможностью заказной сортировки пользователем, когда можно такой порядок в order by задать (например, через case), что top и limit окажутся просто неподъемными. Вот под этим и я подпишусь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 19:04 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32564193&tid=2014428]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 505ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...