Sql 如何使用索引检查查询

Sql 如何使用索引检查查询,sql,sql-server,database,database-design,Sql,Sql Server,Database,Database Design,我使用的是SQL Server,没有足够的数据集来测试查询的性能 我想分析查询,看看索引是否可用。如何在SQL Management Studio中检查,只需键入查询,然后点击Control-L(显示查询执行计划)。在那里,您将能够看到是否正在使用任何索引。“表扫描”表示不使用索引。“索引扫描”意味着使用索引。这实际上比看起来更难-典型的现代DBMS(MS SQL Server也不例外)有时会进行完整的表扫描,即使索引可用,只是因为在少量数据上可能会更快。1 例如: 可以通过索引得到满足,但查

我使用的是SQL Server,没有足够的数据集来测试查询的性能


我想分析查询,看看索引是否可用。如何在SQL Management Studio中检查,只需键入查询,然后点击Control-L(显示查询执行计划)。在那里,您将能够看到是否正在使用任何索引。“表扫描”表示不使用索引。“索引扫描”意味着使用索引。

这实际上比看起来更难-典型的现代DBMS(MS SQL Server也不例外)有时会进行完整的表扫描,即使索引可用,只是因为在少量数据上可能会更快。1

例如:

  • 可以通过索引得到满足,但查询计划明确指出了表扫描:

  • 但如果我们这样做,则使用索引:

更重要的是,DBMS做出的决策可能会受到数据的新鲜度/准确性的影响

对于是否使用索引,最可靠的测试方法是用具有代表性的数据填充数据库,然后查看索引。而且,在您进行查询时,不要忘记对查询的实际执行进行计时



1一个简化的示例:如果整个表都放在一个数据库页面中,那么简单地加载该页面并按顺序遍历它要比等待包含索引的页面的额外I/O更快。

您看过查询执行计划了吗?我不能充分支持这个答案。作为数据库管理员,发现开发的sql代码(包括检查执行计划)数据不足是一件非常讨厌的事情,因此优化人员会在生产数据的上下文中选择一个完全不同的计划。Test可以删除这些内容,但要求开发一个具有代表性数据量的开发平台要有效得多。尽管这篇文章已经发表了4年多了,但我从中学到了很多以前不知道的东西。我觉得它很有信息性。