如何检查查询是否正在使用索引

Gai*_*ter 5 sql database sql-server database-design

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

我想分析查询并查看索引是否有效.我怎么检查呢

J.T*_*lor 8

在SQL Management Studio中,只需键入查询,然后单击Control-L(显示查询执行计划).在那里,您将能够看到是否正在使用任何索引."表扫描"表示不使用索引."索引扫描"表示使用索引.


Bra*_*vic 8

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

例:

更重要的是,DBMS做出的决定可能会受到统计数据的新鲜/准确程度的影响.

该指数是否使用最可靠的测试是简单地用填充数据库代表的数据看看执行计划.并且不要忘记计时查询的实际执行时间!


1一个简化的示例:如果整个表适合单个数据库页面,那么简单地加载该页面并按顺序执行它比单独等待包含索引的页面的附加I/O更快.

  • 我不能足够支持这个答案。作为数据库管理员,很讨厌找到数据不足的 sql 代码(包括检查执行计划),因此优化器会在生产数据的上下文中选择完全不同的计划。测试可以消除这种情况,但在需要具有代表性数据量的开发设备时,它的效率要高得多。 (2认同)