【发布时间】:2011-04-06 14:37:33
【问题描述】:
我有一个包含大约 800 万条记录的 MS SQL 表。 “ID”列上有一个主键(带有只有 0.8% 碎片的聚集索引)。当我运行看似引用 ID 列的任何查询时,查询需要很长时间(实际上最终会导致我的应用程序崩溃)。这包括简单的查询,例如“SELECT * FROM table WHERE ID=2020”。相比之下,不引用 ID 的查询(例如“SELECT TOP 100 * from table”)就可以了。
有什么想法吗?
【问题讨论】:
-
“很长”是什么意思? 1秒? 20 秒?
-
我不明白为什么 - bigint, PK = 具有更新统计信息的聚集索引应该尽可能好。没有别的锁定 ID = 2020?尝试 SELECT * FROM table (NOLOCK) WHERE ID=2020。如果一切都失败了,请尝试删除聚集索引(和所有 NC 索引)并重新创建。
-
为什么应用程序会因为长时间运行的查询而崩溃?...
标签: sql sql-server database performance database-design