hackerboy
پنج شنبه 09 فروردین 1386, 10:54 صبح
[حقوق این مقاله تماماً به صورت کامل متعلق به خودتونه]
همان طوری که همه میدونین، Paging خود ASP.NET تمام دادهها رو لود میکنه و بازدهی کمی برای دادههای زیاد داره. بنابراین بسیاری از برنامه نویسای حرفهای ASP.NET (از جمله شما) از Custom Paging مبتنی بر یک جدول موقتی استفاده میکنند، ولی روش بهتری وجود دارد که بدون استفاده از جدول موقتی، سرعت بیشتر و بازدهی بالاتری داشته باشد.
راز این روش استفاده از SET ROWCOUNT (http://msdn2.microsoft.com/en-us/library/ms188774.aspx) است. این دستور باعث میشود بعد از اینکه تعداد مشخصی سطر پردازش شد، اجرای دستور رو متوقف میکنه.
تمام این کارها با یک StoredProcedure انجام میشه. توجه کنین:
CREATE PROCEDURE dbo.usp_CustomPaging
(
@startRowIndex int,
@maximumRows int
)
AS
DECLARE @first_id int, @startRow int
SET ROWCOUNT @startRowIndex
SELECT @first_id = postId FROM posts ORDER BY postId
SET ROWCOUNT @maximumRows
SELECT * FROM posts
WHERE postId >= @first_id
ORDER BY postId
SET ROWCOUNT 0
GO
کار این StoredProcedure بسیار سادهاست. ابتدا id اولین سطر که باید خونده بشه رو پیدا میکنه، سپس به اندازهی سایز صفحه (تعداد رکوردهای یک صفحه که با SET ROWCOUNT @maximumRows مشخص میشه) رکوردها رو میخونه.
فقط دقت کنید که این SP دوتا پارامتر ورودی داره، یکی startRowIndex و دیگری maximumRows که میتونید با یکم دستکاری کاری بکنید که این SP شمارهی صفحه رو دریافت کنه و خودش startRowIndex رو دربیاره.
پس همین الآن tempTable رو بریزید دور و از این استفاده کنید!
منبع: http://www.4guysfromrolla.com/webtech/042606-1.shtml
همان طوری که همه میدونین، Paging خود ASP.NET تمام دادهها رو لود میکنه و بازدهی کمی برای دادههای زیاد داره. بنابراین بسیاری از برنامه نویسای حرفهای ASP.NET (از جمله شما) از Custom Paging مبتنی بر یک جدول موقتی استفاده میکنند، ولی روش بهتری وجود دارد که بدون استفاده از جدول موقتی، سرعت بیشتر و بازدهی بالاتری داشته باشد.
راز این روش استفاده از SET ROWCOUNT (http://msdn2.microsoft.com/en-us/library/ms188774.aspx) است. این دستور باعث میشود بعد از اینکه تعداد مشخصی سطر پردازش شد، اجرای دستور رو متوقف میکنه.
تمام این کارها با یک StoredProcedure انجام میشه. توجه کنین:
CREATE PROCEDURE dbo.usp_CustomPaging
(
@startRowIndex int,
@maximumRows int
)
AS
DECLARE @first_id int, @startRow int
SET ROWCOUNT @startRowIndex
SELECT @first_id = postId FROM posts ORDER BY postId
SET ROWCOUNT @maximumRows
SELECT * FROM posts
WHERE postId >= @first_id
ORDER BY postId
SET ROWCOUNT 0
GO
کار این StoredProcedure بسیار سادهاست. ابتدا id اولین سطر که باید خونده بشه رو پیدا میکنه، سپس به اندازهی سایز صفحه (تعداد رکوردهای یک صفحه که با SET ROWCOUNT @maximumRows مشخص میشه) رکوردها رو میخونه.
فقط دقت کنید که این SP دوتا پارامتر ورودی داره، یکی startRowIndex و دیگری maximumRows که میتونید با یکم دستکاری کاری بکنید که این SP شمارهی صفحه رو دریافت کنه و خودش startRowIndex رو دربیاره.
پس همین الآن tempTable رو بریزید دور و از این استفاده کنید!
منبع: http://www.4guysfromrolla.com/webtech/042606-1.shtml