我有一张没有任何主键的表。数据已经存在。我做了一个非聚集索引。但是当我运行查询时,实际执行计划没有显示索引扫描。我认为非聚集索引不起作用。可能是什么原因。请帮助我
答案 0 :(得分:5)
首先 - 为什么没有主键? 如果它没有主键,那么它不是表 - 只需添加一个!这将有助于这么多层面......
其次:即使您有索引,SQL Server查询优化器也会始终查看您的查询以确定使用索引是否合理(或不使用)。如果选择所有列和大部分行,那么使用索引是没有意义的。
所以要避免的事情是:
SELECT * FROM dbo.YourTable
几乎可以保证不使用任何索引WHERE
条款Gender
列根本没有帮助在不了解您的表结构,这些表中包含的数据,行数以及您正在执行的查询类型的情况下,没有人可以真正回答您的问题 - 它太宽泛了...... ..
更新:如果要在与主键不同的表上创建聚簇索引,请执行以下步骤:
1)首先,设计你的桌子 2)然后打开索引设计器 - 在您选择的列上创建一个新的聚簇索引。请注意 - 这不是主键!
3)之后,您可以将主键放在ID
列上 - 它会创建一个索引,但该索引未归类!
答案 1 :(得分:1)
在没有任何更多信息的情况下,我猜测的原因是该表太小而不适合索引寻求值得。
如果你的表少于几千行,那么SQL Server几乎总是选择执行表/索引扫描而不管该表上的索引只是因为索引扫描实际上更快
索引扫描本身并不一定表示性能问题 - 查询实际上是否很慢?