Лучший способ хранить 900000 записей при привязке telerik radgrid к пользовательской подкачке - PullRequest
0 голосов
/ 10 октября 2011

Я создаю пример приложения в sharepoint 2010, я хочу загрузить 900000 записей в telerik radgrid, поэтому сначала я храню все 900000 записей в viewstate, получаю 50 записей из viewstate и связываю их в radgrid из-за проблемы с производительностью но размер страницы становится очень большим, поэтому он выдает ошибку тайм-аута страницы, после чего я сохраняю 900000 записей в пакете свойств SPWeb вместо того, чтобы сохранять в viewstate, даже если он выдает ту же ошибку, может кто-нибудь помочь мне, пожалуйста. где я могу хранить эти (900000) значения без каких-либо проблем с тайм-аутом или производительностью, пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

ViewState не волшебная свалка для данных.Он предназначен для хранения информации о состоянии элементов управления и все.Существуют обстоятельства, когда люди используют его для других целей, но его никогда не следует использовать для хранения больших порций данных.

Что касается вашего вопроса, вам нужно внедрить какой-либо тип системы поиска или фильтрации, чтобы уменьшить ваши результаты.Не должно быть никакого сценария, когда вам нужно извлечь почти 1 000 000 результатов из базы данных.

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

Вот краткий пример того, как использовать подкачку, чтобы ограничить результаты одной страницей:

CREATE PROCEDURE dbo.GetProductsPaged ( 
    @startRowIndex int, 
    @maximumRows int 
) AS

SELECT PriceRank, ProductName, UnitPrice 
FROM (SELECT ProductName, UnitPrice, ROW_NUMBER() OVER(ORDER BY UnitPrice DESC) AS PriceRank FROM Products ) AS ProductsWithRowNumber 
WHERE RowRank > @startRowIndex AND RowRank <= (@startRowIndex + @maximumRows)

А вот статья, к которой вы можете обратиться за помощью в приведенном выше:http://www.asp.net/data-access/tutorials/efficiently-paging-through-large-amounts-of-data-vb

РЕДАКТИРОВАТЬ

Не похоже, что эта информация каким-либо образом зависит от пользователя, поэтому вы также можете посмотреть на кеширование данных, например:

DataTable table = new DataTable("LotsOfData");

if (Cache.Get("MyData") == null) 
{ 
    //retrieve the data from the database
    table = GetLotsOfData();         

    //store the data in cache
    Cache.Insert("MyData", table); //store the data in cache
} 
else 
{ 
    //get the data from cache
    table = (DataTable)Cache.Get("MenuData"); 
} 
0 голосов
/ 10 октября 2011

Вы не хотите хранить 900 000 записей в viewstate. Это ужасная трата ресурсов, как клиентских, так и серверных. И, если вы стремитесь к индивидуальному пейджинговому решению, нет причин хранить всю информацию на стороне клиента. Тьфу!

Подумайте над тем, чтобы прочитать статью, подобную Эффективное перелистывание больших объемов данных . Немного устаревший, но основные понятия обоснованы. Глядя на ваш запрос, важно понять концепции.

...