包含SQL索引提示如何影响查询性能?

包含SQL索引提示如何影响查询性能?,sql,sql-server,indexing,hint,Sql,Sql Server,Indexing,Hint,假设我在SQL 2005数据库中有一个表,其中包含2000000多条记录和一些索引。在查询中使用索引提示有什么好处?在查询中使用索引提示有任何缺点吗?首先,尝试使用SQL Profiler在数据库中生成一个.trc活动文件,用于几个小时的正常工作负载。然后使用SQLServerManagementStudio工具菜单上的“数据库引擎优化顾问”,查看它是否建议了任何可能有益的附加索引、复合索引或覆盖索引 我从不使用查询提示,主要处理数百万行数据库。它们有时会对性能产生负面影响。只有在查询涉及连接表

假设我在SQL 2005数据库中有一个表,其中包含2000000多条记录和一些索引。在查询中使用索引提示有什么好处?在查询中使用索引提示有任何缺点吗?

首先,尝试使用SQL Profiler在数据库中生成一个.trc活动文件,用于几个小时的正常工作负载。然后使用SQLServerManagementStudio工具菜单上的“数据库引擎优化顾问”,查看它是否建议了任何可能有益的附加索引、复合索引或覆盖索引


我从不使用查询提示,主要处理数百万行数据库。它们有时会对性能产生负面影响。

只有在查询涉及连接表,并且用于连接到另一个表的列与多个索引匹配时,索引提示才会起作用。在这种情况下,数据库引擎可能会选择使用一个索引进行连接,通过调查,您可能知道,如果它使用另一个索引,查询将执行得更好。在这种情况下,您将提供索引提示,告诉数据库引擎使用哪个索引。

我的经验是,有时您比SQL Server更了解您的数据集。在这种情况下,您应该使用查询提示。换句话说:您帮助优化器做出决定

我曾经构建过一个数据仓库,其中SQLServer没有在复杂查询中使用最佳索引。通过在我的查询中给出索引提示,我设法使查询速度提高了大约100倍


仅在分析查询计划后使用它们。如果您认为在使用另一个索引或以不同顺序使用它们时,您的查询可以运行得更快,请给服务器一个提示。

我相信这里的每个人都指出的关键点是,如果并且仅当,存在多个可用于检索数据的索引,如果SQL Server未使用正确的索引,则可以使用这些索引

根据我的经验,我发现需要索引提示的情况并不常见,我相信今天我可能有2-3个使用它们的查询。。。。正确的索引创建和数据库优化应该可以让您在大部分情况下访问正在运行的数据库