0

私は何千もの製品でいっぱいのデータベースを持っており、異なるクエリが実行されるたびに大量のデータセットをプルバックするためにデータベースにクエリを実行しています。プロジェクトが稼働し、ますます多くの人がサイトにアクセスし始めると、そのパフォーマンスが打撃を受けるのではないかと心配しています。サーバーへの電力を増やすことができないので、将来の手間を省くことができるソリューションが欲しいです。SQLクエリにセットをロードする方法はありますか?

select top 20 where xxx
select next 20 

わからない。

4

1 に答える 1

1

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
于 2012-06-05T08:04:19.867 に答える