powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
4 сообщений из 29, страница 2 из 2
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
    #32563388
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПотому что речь идёт о транспорте между СУБД и клиентом и о том, что это узкое место в системе...
Что есть клиент в вашем понимании?

Для меня клиент в вашем случае, это прослойка (звено) между Сервером БД и Internet Сервером ( IIS ). При таком раскладе клиент находится в пределах одной ЛВС (10 -100 Mb/sec) с сервером БД. Поэтому мне не понятны ваши сетования про узкое место. Не верю, что это м.б. узким местом.
Сегодня как вы совершенно справедливо заметили, многие производители СУБД учитывают в своих продуктах особенности работы с данными через Internet. Честь им и хвала за это.

авторУсловия - есть таблица 7 колонок. 1 колонка - первичный ключ. Надо выводить данные постранично с возможностью сортировки по всем столбцам.

Угу. Тоже имеется таблица с чуть большим кол. полей - "Карточка пациента"
Задача требуется найти какую-то из них.
Пути решения:
- Вывалить весь список на клиента, и пусть он потом в стиле FoxPro
гоняет скролингом вверх-вниз или постарнично, ищет кого ему надо.
- Ни в коем случае не выдавать список в "сыром" виде. Заставляем
пользователя предварительно задать условия для отбора из БД.
При поиске карточки выводится форма запроса, в которой пользователь
указывает нужные параметры (Фамилия или её часть - обязательое
условие). Ставим ограничение на кол. строк которые могут быть отобраны
по заданным условиям. Допустим это число = 50. Если результат
возвращает список более чем из 50 строк, то просим уточнить условия.

Думаю, что мне не надо объяснять вам, как узнать какое кол. может вернуть запрос.

Для того что бы предметно что-то обсуждать по данному поводу, необходимо знать полные условия задачи , если их нет, то каждый остается при своем мнении.
...
Рейтинг: 0 / 0
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
    #32564193
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, есть куча реальных приложений, когда надо вытаскивать именно 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 окажутся просто неподъемными.
...
Рейтинг: 0 / 0
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
    #32564315
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВо-первых, есть куча реальных приложений, когда надо вытаскивать именно N строк начиная с M, никоим образом не относящихся к вебу, например, стандартизованные печатные формы документов. Так что понимание необходимости постраничного вывода, наверное, не должно являться предметом обсуждения.
Вообще-то предметом обсуждения является использование для этого сервера, а не клиента.
авторизменить постановку: возвращать не 10 записей начиная с 3-й, а возвращать 10 записей, у которых id_XXX больше, чем у 2-й.

Идея хорошая.
...
Рейтинг: 0 / 0
Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
    #32564397
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов Кстати, ощутимая часть вопросов на форуме в той или иной степени касается желания написать некий запрос без подзапросов или ряд запросов свернуть в один запрос. У меня был не один десяток ситуаций, когда деление запроса на несколько более мелких с использованием временных таблиц на порядок повышало скорость работы (только SELECT + INSERT во временные таблицы). Тем более в случае вывода результатов в веб с возможностью заказной сортировки пользователем, когда можно такой порядок в order by задать (например, через case), что top и limit окажутся просто неподъемными.
Вот под этим и я подпишусь!!!
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ну вот и я снова... Выбрать записи с 3-ей по 5-ую, например...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]