非群集索引不能正常工作的SQL Server

Moh*_*rma 2 sql-server indexing non-clustered-index

我有一个没有任何主键的表.数据已经存在.我做了一个非聚集索引.但是当我运行查询时,实际执行计划没有显示索引扫描.我认为非聚集索引不起作用.可能是什么原因.请帮我

mar*_*c_s 5

首先 - 为什么没有主键? 如果它没有主键,则它不是表 - 只需添加一个!这将有助于这么多层面......

其次:即使您有索引,SQL Server查询优化器也会始终查看您的查询以确定是否有意义使用索引(或不使用索引).如果选择所有列和大部分行,那么使用索引是没有意义的.

所以要避免的是:

  • SELECT * FROM dbo.YourTable几乎保证使用任何指数
  • 如果你WHERE的查询中没有一个好的子句
  • 如果您的索引位于不真正选择一小部分数据的列上; 布尔列上的索引或Gender具有最多三个不同值的列根本没有帮助

在不了解你的表结构,这些表中包含的数据,行数以及你正在执行什么类型的查询的情况下,没有人能真正回答你的问题 - 它太宽泛了....

更新:如果要在与主键不同的表上创建聚簇索引,请执行以下步骤:

1)首先,设计你的表2)然后打开索引设计器 - 在你选择的列上创建一个新的聚簇索引.请注意 - 这不是主键!

替代文字

3)之后,您可以将主键放在ID列上 - 它将创建索引,但该索引不是群集的!

替代文字

  • +1.打败我吧!如果可以的话,我会给它+5代表"为什么没有主键?" (2认同)