【发布时间】:2013-07-05 12:59:18
【问题描述】:
我在 SQL Server 2008 中有一个包含数千万条记录的表。 第一列 (ID) 是主键。其他列不可索引。
需要列出所有ID为30的倍数的记录。所以我写道:
SELECT ID,... FROM table1 WHERE (ID between value1 AND value2) AND (ID % 30 = 0)
这个查询太慢了,即使结果只包含 100 条记录。 因此,除非我找到更快的解决方案,否则我的数据库毫无用处。
我的数据库的特殊功能是:
我从不更新此表中的值。只有 INSERT 和 SELECT。
每条新记录的 ID (INSERT) 大于表中所有先前现有的 ID。 (ID 以升序排列)。
【问题讨论】:
标签: sql-server sql-server-2008 query-optimization