包含SQL索引提示如何影响查询性能?
时间:2020-03-06 14:33:44 来源:igfitidea点击:
假设我在SQL 2005数据库中有一个表,其中包含2,000,000多个记录和一些索引。在查询中使用索引提示有什么优势?在查询中使用索引提示是否有缺点?
解决方案
首先,尝试使用SQL事件探查器在数小时内为正常工作负载在数据库中生成活动的.trc文件。然后使用" SQL Server Management Studio工具"菜单上的"数据库引擎优化顾问"来查看它是否建议任何其他索引,复合索引或者涵盖可能有益的索引。
我从不使用查询提示,并且大多数情况下都使用数百万行数据库。它们有时会对性能产生负面影响。
索引提示仅在查询涉及到联接表,并且用于联接到另一个表的列匹配多个索引的情况下才起作用。在这种情况下,数据库引擎可能会选择使用一个索引进行联接,并且从调查中我们可能会知道,如果它使用另一个索引,则查询性能会更好。在这种情况下,我们将提供索引提示,告诉数据库引擎要使用哪个索引。
我的经验是,有时候我们比SQL Server更了解数据集。在这种情况下,我们应该使用查询提示。换句话说:我们可以帮助优化器做出决定。
我曾经建立一个数据仓库,其中SQL Server在复杂的查询中不使用最佳索引。通过在查询中提供索引提示,我设法使查询的运行速度提高了约100倍。
仅在分析查询计划后才使用它们。如果我们认为在使用另一个索引或者以其他顺序使用它们时查询可以更快地运行,请向服务器提示。
我相信这里的每个人都指向的关键点是,如果非常仔细地考虑,使用索引提示可以提高查询的性能(如果且仅当存在)时,存在多个可用于检索数据的索引,以及如果使用SQL服务器未使用正确的服务器。
根据我的经验,我发现需要索引提示并不是很常见,我相信我今天可能正在使用2-3个查询,这些查询已使用它们。到执行数据库的方式。