2009-08-18 2 views
1

Я столкнулся с проблемой производительности при разработке текущего пользовательского интерфейса. Проблема, я полагаю, однако является общей.Успешное улучшение получения выгружаемых данных для сетки asp.net

У меня есть страница с простой сеткой asp.net. Сетка отображает данные из таблицы на основе определенных критериев поиска. Кроме того, сетка имеет фиксированный размер страницы (скажем, 10). В нижней части экрана находится пейджер, который можно использовать для навигации по черно-белым страницам. На задней панели, когда нажата кнопка поиска, вызывается хранимая процедура, которая возвращает нужные данные.

Хранимая процедура имеет параметры, такие как currentpageIndex, размер_страницы, другие критерии поиска и т.д. Вот псевдокод для зра:

-- SP begins 
-- calculate the page index range to return required using current page index and page size 
-- query the table in a CTE and do all filtering. Also calculate row numbers so that 
-- correct record range can be returned. 
-- use the cte to return the correct record based on the row number calculated in CTE 
-- SP ends 

Я следующие проблемы/запросов в этом подходе

  1. Когда Размер таблицы Db большой (скажем, 10 миллионов записей), производительность ухудшается, и этот подход становится непрактичным.
  2. Использует ли табличную переменную или временную таблицу более полезную?
  3. Есть ли другой эффективный способ получения выгружаемых данных из базы данных?

Hi Dan, статья предоставила новое представление для расчета полных рядов. Действительно полезно. Благодарю.

Но все же есть лучший способ, чем использовать CTE, когда данные большие?

Обновление: Я нашел еще несколько других исполнителей: approaches для эффективного получения постраничных записей.

ответ

1

Есть хорошая статья о SqlServerCentral под названием SQL Server 2005 Paging – The Holy Grail, которая показывает несколько методов для серверной подкачки. Вам нужно будет зарегистрироваться, чтобы просмотреть его.

Я знаю, что для действительно больших наборов результатов программное обеспечение, подобное Google, будет simply estimate, сколько строк будет возвращено, минуя необходимость получения счета всех возвращенных строк.

Извините, если я не могу больше помочь.

Смежные вопросы