Советы по ускорению SqlDataSource? - PullRequest
1 голос
/ 26 марта 2009

У меня есть два элемента управления SqlDataSource на странице. Один загружает данные высокого уровня, а другой загружает больше деталей в зависимости от того, какой элемент высокого уровня вы выбрали. Это часть большого поиска, который содержит более 900 000 записей, и я ищу способы ускорить его. Будь то опции, которые я могу добавить в SqlDataSource, что я могу сделать с SQL-запросом или использовать альтернативу, такую ​​как ObjectDataSource.

Я изменил DataSourceMode на DataReader, потому что слышал, что он быстрее и использует меньше памяти. Я также заметил, что пейджинг очень медленный.

Я делаю следующее с моего этого сайта, http://mosesofegypt.net/post/2008/02/Building-a-grouping-Grid-with-GridView-and-ASPNET-AJAX-toolkit-CollapsiblePanel.aspx,, но, очевидно, с моими данными, которые превышают 900 000 записей, и я не уверен, как я могу добавить подкачку во второе представление сетки, потому что сейчас это на сетке верхнего уровня

Ответы [ 4 ]

3 голосов
/ 26 марта 2009

Я не думаю, что сам элемент управления источником данных должен был бы быть целью какой-либо оптимизации. Он будет работать только с теми данными, которые вы получаете от него (то есть вы должны оптимизировать свой SQL) или с данными, помещенными в него перед отправкой в ​​SQL (то есть вам следует оптимизировать код приложения).

1 голос
/ 26 марта 2009
  1. Я бы начал с подкачки ваших данных на сервере asp.net.
  2. Я бы обязательно проиндексировал ваши таблицы базы данных, чтобы получить максимальную производительность. Также используйте анализатор запросов, чтобы увидеть болевые точки в производительности вашего запроса.
  3. Если вы ищете, я бы рекомендовал использовать полнотекстовое индексирование, предоставляемое сервером SQL.
0 голосов
/ 25 октября 2011

Лично я хотел бы изучить использование ObjectDataSource и создание пользовательских страниц. 4GuysFromRolla.com предлагает несколько полезных советов о том, как сделать пользовательский пейджинг.

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

причина? Каждый вызов для обновления данных (изменение страницы, редактирование записи и т. Д.) Снова получает ВСЕ данные ... и затем клиент отображает страницу, на которой вы фактически находитесь.

С помощью пользовательского пейджинга и ObjectDataSource ... вы можете получить только меньшее подмножество записей, в которых вы действительно нуждаетесь сейчас.

0 голосов
/ 26 марта 2009

Когда мне приходилось отслеживать большие объемы данных, я обнаружил, что было бы лучше не использовать стандартный pagin, а вместо этого использовать переопределение для сбора только 10 или 20 строк за раз из базы данных. Вам нужен достойный процесс индексации, чтобы код знал, какие 10 или 20 строк он отображает, но он ускоряет процесс.

...