我有一个没有任何主键的表。数据已经在那里。我做了一个非聚集索引。但是当我运行查询,实际执行计划不显示索引扫描。我认为非聚集索引不起作用。可能是什么原因。请帮我非聚集索引不起作用sql服务器
回答
首先 - 为什么没有主键?如果它没有主键,它不是表 - 只需添加一个!第二:即使你有一个索引,SQL Server查询优化器也会一直关注你的查询,以决定是否有意义使用索引(或不)。如果您选择所有列和大部分行,那么使用索引是毫无意义的。
所以需要避免的事情是:
SELECT * FROM dbo.YourTable
几乎可以保证不使用任何指标- ,如果你没有在您的查询的好
WHERE
条款 - 如果你的指数是在一个并不真正选择一小部分数据的列上;一个布尔列的索引,或者最多三个不同值的
Gender
列完全不
帮助不知道了很多关于你的表结构,包含在这些表中的数据,行数和什么样的你执行查询的,没有人能真正回答你的问题 - 它只是太宽泛....
更新:,如果你想创建一个表,该表一个聚集索引从您的主键不同,请执行以下步骤:
1)首先,设计你的表 2)然后打开索引设计器 - 在你选择的列上创建一个新的,聚集索引。请注意 - 这不是主要关键!
3)在此之后,你可以把你的主键上ID
列 - 它会创建一个索引,但索引为不聚集!
+1。击败我!我会给它+5为“为什么没有主键?”如果我能 – 2010-12-07 06:38:32
谢谢marc_s – 2010-12-07 06:49:33
没有有任何我猜想,原因是该表是太小索引查找是值得的更多信息。
如果您的表的行数少于几千行,那么SQL Server几乎总是会选择执行表/索引扫描,无论该表上的索引为,只是因为索引扫描实际上更快。
索引扫描本身并不一定表示性能问题 - 查询是否真的很慢?
- 1. SQL服务器:聚集索引慢
- 2. SQL非聚集索引
- 3. SQL服务器行不聚簇索引
- 4. 聚集索引和非聚集索引
- 5. 复合聚集索引和非聚集索引在sql server 2005
- 6. sql server中的非聚集索引
- 7. 两个SQL非聚集索引创建
- 8. SQL Server的非聚集索引设计
- 9. SQL Server 2008非聚集索引
- 10. 删除SQL服务器中的聚集索引是否安全?
- 11. 加入非聚集索引
- 12. 将聚集索引转换为非聚集索引?
- 13. 非聚集索引功能相对于聚集索引寻求
- 14. SQL Server非聚簇索引
- 15. SQl服务器中的非集群索引
- 16. 群集索引和非聚簇索引 - SQL Server和Oracle?
- 17. 非聚集索引和非聚集索引的区别是什么
- 18. SQL中的聚集索引
- 19. SQL Server聚集索引 - 索引问题
- 20. 禁用所有非聚集索引
- 21. 通过群集或非聚集索引
- 22. 代码与聚集索引不起作用
- 23. SQL服务器:CASE不起作用
- 24. Sql服务器更新不起作用
- 25. SQL Server:是否可以将UPDLOCK与非聚集索引一起使用?
- 26. SQL服务器 - 多聚集透视表
- 27. 索引在Sql服务器
- 28. 聚簇索引和非聚簇索引
- 29. 在SQL Server 2012上使用ServiceStack OrmLite创建非聚集索引
- 30. 同时具有非聚集索引和聚集索引的好处
您需要提供更多的细节!查询优化器可能会决定忽略索引的原因有几个(如果表非常小,如果使用的索引键不够有选择性,如果查询包含其他谓词等)。没有显示表结构(例如。创建表脚本),索引创建脚本,查询和查询计划,也没有关于数据的一些统计信息,这将很难帮助您超出一般考虑范围。 – mjv 2010-12-07 06:41:02