powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Организция получения результатов поиска в СУБД
7 сообщений из 7, страница 1 из 1
Организция получения результатов поиска в СУБД
    #33872685
antonmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Может быть, кому-то и покажется вопрос простым, но для меня это очень важно.
Суть дела:
Дано:
Есть база данных МSSQL и куча таблиц с кучей записей.
Есть aspx страница, генерирующая и выполняющая запрос к вышеуказанной СУБД.
Задача:
Получить необходимое кол-во записей из БД, например первые 20 или четвертые 20.
Отобразить полученные записи на aspx странице. Если записей больше 20 разбить на несколько страниц.
Отобразить кол-во доступных страниц, на каждой из которых еще по 20 записей.

Такая вот на первый взгляд простая задача, но если выполнить все лишь бы работало, не годится.
Предполагается, что массив данных очень большой и таких запросов будет порядка нескольких тысяч в день.

На мой взгляд, есть несколько путей решения данной задачи:
1) с помощью временных таблиц.
Результат запроса сохраняется в таблицу со сгенерированным именем.
Получаем кол-во строк в таблице и необходимое кол-во записей.
Сохраняем имя таблицы и в следующих запросах используем эту таблицу.
По истечении определенного времени, начиная с последнего обращения к сгенерированной таблице,
удаляем ее.


Результат: плюсы: снижение нагрузки на процессор (за счет уменьшения объема данных), уменьшение времени
выполнения запроса, пользователь всегда получает данные актуальные на момент начала поиска.
минусы: увеличение объема базы данных
2) без временных таблиц
с помощью двух запросов получаем кол-во найденных записей и определенное их кол-во
отображаем их пользователю, а на следующие запросы все повторяем заново.

Результат: плюсы: неизменный размер базы данных
минусы: увеличение нагрузки на процессор (за счет неизменности объема данных и повторных запросах)
увеличение времени выполнения 2-го и более запроса.

Вот так я вижу эту задачу.
Очень хотел бы узнать ваше мнение по решению данной задачи. Ресурсы выч. системы не важны, чем больше эффективность, тем лучше.
Заранее благодарен.
...
Рейтинг: 0 / 0
Организция получения результатов поиска в СУБД
    #33872997
VovanDr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>1) с помощью временных таблиц.

а почему вместо временных таблиц вьюшки не использовать?, а так первый вариант симпатичнее получаеться
...
Рейтинг: 0 / 0
Организция получения результатов поиска в СУБД
    #33878237
antonmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, VovanDr.

Совсем недавно начал работать с MSSQL, но знаю, что в Oracle существуют такие вещи, как
view и Materialized view. Первая — это просто запрос, а вторая это уже реальная таблица, обновляемая СУБД
автоматически, при появлении новых подходящих записей.

Если в MSSQL так, то возможно view будет и быстрей, но все же это не таблица и вычерпывание данных будет происходить при обращении к такому view из других требуемых таблиц. Я прав?
...
Рейтинг: 0 / 0
Организция получения результатов поиска в СУБД
    #33878894
horseman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 -е решение с временной таблицей есть оч неудачное и к тому же опасное решение. Всегда в таких случаях есть вероятность того что юзер увидит уже устаревшие данные, а что он потом с ними сделает- эт уже никому неизвестно. Может руководству понести в виде отчета, или че-нить еще похуже.
В принципе ничего страшного в этом нет эадача вообщем довольно тривиальна и решалась не одним десятком людей.
Эта задача полностью лежит в плоскости MSSQL сервера и его технологии запросов, индексов и т.д.
Рекомендую посмотреть это: http://www.sql.ru/faq/faq_topic.aspx?fid=105. Ну и конечно внимательно смотреть на запросы, планы выполнения индексы БД.
...
Рейтинг: 0 / 0
Организция получения результатов поиска в СУБД
    #33879341
GlebZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, antonmo, Вы писали:

Смотрим статью К вопросу об идентификаторах. Если это MSSQL 2005 — то MS SQL 2005: оконные функции. Если запрос сложный, то зачастую быстрее всего работает просто пролистывание и чтение с помощью DataReader'a на определенных строк. Нужно подбирать нужный способ.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Организция получения результатов поиска в СУБД
    #33879492
Dronopotamus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, antonmo, Вы писали:

A>Здравствуйте.
A>Может быть, кому-то и покажется вопрос простым, но для меня это очень важно.
A>Суть дела:
A>Дано:
A> Есть база данных МSSQL и куча таблиц с кучей записей.
A> Есть aspx страница, генерирующая и выполняющая запрос к вышеуказанной СУБД.
A>Задача:
A> Получить необходимое кол-во записей из БД, например первые 20 или четвертые 20.
A> Отобразить полученные записи на aspx странице. Если записей больше 20 разбить на несколько страниц.
A> Отобразить кол-во доступных страниц, на каждой из которых еще по 20 записей.

я бы для начала сделал так:
1) посылаем запрос, возвращающий только ключевые столбцы всех записей, без учета пейджинга
2) датаридером проматываем до нужной страницы, читаем ключевые значения
3) в цикле догружаем нужные поля для каждой записи
а вот если не хватит производительности... :???:... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Организция получения результатов поиска в СУБД
    #33879511
Dronopotamus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Dronopotamus, Вы писали:

D>а вот если не хватит производительности...

то я бы первым делом убил цикл и догружал записи одним запросом :))... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Организция получения результатов поиска в СУБД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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