sql-server - 非聚集索引不工作sql server

标签 sql-server indexing non-clustered-index

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

最佳答案

首先 - 为什么没有主键?? 如果没有主键,它就不是表 - 只需添加一个!这将在很多层面上提供帮助....

其次:即使您有索引,SQL Server 查询优化器也会始终查看您的查询以决定使用索引是否有意义。如果选择所有列和大部分行,则使用索引毫无意义。

所以要避免的事情是:

  • SELECT * FROM dbo.YourTable 几乎可以保证使用任何索引
  • 如果您的查询中没有合适的 WHERE 子句
  • 如果您的索引所在的列实际上并未选择一小部分数据; bool 列或最多具有三个不同值的 Gender 列的索引根本没有帮助

如果不深入了解您的表结构、这些表中包含的数据、行数以及您正在执行的查询类型,没有人能真正回答您的问题 - 它太宽泛了。 ..

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

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

alt text

3) 之后,您可以将主键放在 ID 列上 - 它会创建一个索引,但该索引未聚集!

alt text

关于sql-server - 非聚集索引不工作sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373957/

相关文章:

sql-server - 如何从 SQL Server 生成的脚本中删除数据库名称?

sql - 有没有办法从变量中选择数据库?

mysql - SQL Space 节省索引字符串列作为枚举

sql - 聚集对数据进行物理排序和非聚集索引?

sql-server - SQL Server (SQLEXPRESS) 和 SQL Server 代理 (SQLEXPRESS)

SQL效率-使用dateAdd函数查询两次;或 SubQuery 和 DateAdd 函数一次;日期之间

python - 列表索引适用于 macOS 但不适用于 Windows?

javascript - 如何在 Mongoose 的单个文档中索引多个唯一数据字段?

sql-server - SQL Server : Create Nonclustered Index without giving a name to it

azure - 如何避免键查找