我在 SQL Server 2008 中有一个包含数千万条记录的表。第一列 (ID) 是主键。其他列不可索引。
需要列出 ID 为 30 的倍数的所有记录。所以我写道:
SELECT ID,... FROM table1 WHERE (ID between value1 AND value2) AND (ID % 30 = 0)
这个查询太慢了,即使结果只包含 100 条记录。因此,除非我找到更快的解决方案,否则我的数据库毫无用处。
我的数据库的特殊功能是:
我从不更新此表中的值。只有插入和选择。
每条新记录的 ID (INSERT) 都比表中所有先前存在的 ID 多。(ID 以升序排列)。