0
我有一個數據庫充滿了成千上萬的產品,我每次運行不同的查詢時都會查詢它以回收大量數據。我擔心,一旦項目開始實施,越來越多的人開始訪問該網站,該性能將受到影響。我不能增加服務器的功率,所以我會喜歡一個解決方案,可以讓我省卻麻煩。有沒有什麼方法在sql查詢中加載集?分頁的ASP.NET中繼器
select top 20 where xxx
select next 20
我不確定。
我有一個數據庫充滿了成千上萬的產品,我每次運行不同的查詢時都會查詢它以回收大量數據。我擔心,一旦項目開始實施,越來越多的人開始訪問該網站,該性能將受到影響。我不能增加服務器的功率,所以我會喜歡一個解決方案,可以讓我省卻麻煩。有沒有什麼方法在sql查詢中加載集?分頁的ASP.NET中繼器
select top 20 where xxx
select next 20
我不確定。
通過使用SQL Server 2005提供的新函數ROW_NUMBER(),您可以獲得帶有行號的結果集。此行號可用於在數據庫端進行分頁。
CREATE PROCEDURE [dbo].[getcust]
@PageIndex INT,
@PageSize INT,
@Searchkey VARCHAR(255),
@TotalRecords int OUTPUT
AS
IF EXISTS(SELECT * FROM tbcustomer WHERE cust_firstname= @Searchkey)
BEGIN
SELECT @TotalRecords =count(*) FROM tbcustomer WHERE cust_firstname= @Searchkey;
WITH customer AS (
SELECT ROW_NUMBER() OVER (ORDER BY cust_firstname ASC) AS Row,
cust_id, cust_firstname,address,phone
FROM tbcustomer WHERE cust_firstname= @searchkey
)
SELECT cust_id,cust_firstname,address,phone FROM customer
WHERE Row between (@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize
END
您需要提供有關數據訪問策略的更多詳細信息。如果你正在使用LINQ,你總是可以使用.Products.Skip(PageNumber * ItemsPerPage).Take(ItemsPerPage)在哪裏PageNumber和ItemsPerPage被傳入 –
嗨,John,對不起,我正在使用一個名爲實體空間的實體框架。 –
我不打擾優化分頁 - 我寧願尋求實現良好的搜索/過濾選項。沒有人真的想要瀏覽超過5頁的結果。 – Filburt