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 回答