【发布时间】:2009-06-09 23:22:05
【问题描述】:
我有一个包含 15 列和 650 万条记录的表。 我需要在分页的帮助下从 C# 端访问此表。我已经编写了一个 SP,但检索数据大约需要 1.30 分钟。 这是我的存储过程 -
Create Proc demo
(
@startRowIndex int,
@maximumRows int
)
AS
DECLARE @first_id int, @startRow int
SET @startRowIndex = (@startRowIndex - 1) * @maximumRows
IF @startRowIndex = 0
SET @startRowIndex = 1
SET ROWCOUNT @startRowIndex
SELECT @first_id = RecordID FROM edd_business_listings_05282009 ORDER BY RecordID
PRINT @first_id
SET ROWCOUNT @maximumRows
SELECT * FROM edd_business_listings_05282009 WHERE
RecordID >= @first_id
ORDER BY RecordID
SET ROWCOUNT 0
有谁知道让这个运行更快的方法。
【问题讨论】:
-
如果没有表定义(请创建表)、键和索引,我们只会猜测。并不是说这曾经阻止过这里的任何人......
-
RecordID 上的非聚集索引,即使它已经是聚集索引,也有助于 SELECT @first_id = RecordID ....
-
如果 RecordID 是连续的,聚集索引会更好。
-
聚集索引对于最终的 SELECT 来说效果很好,但对于初始 SELECT,非聚集索引需要更少的 I/O。
-
谁将翻阅 650 万条记录?
标签: c# sql-server paging