Sql server MS SQL查询速度慢,因为计划错误或索引碎片
我有一个存储过程,它通常运行得很快(几乎不到几秒钟),但有时使用相同参数的同一个过程需要几分钟才能执行。但是如果我在此时对索引进行碎片整理,它会在几秒钟内再次开始运行 这可能是因为执行计划不好或索引不完整 如果是这样的话,有没有办法使这个过程不依赖于执行计划或分段索引 提前感谢,,Sql server MS SQL查询速度慢,因为计划错误或索引碎片,sql-server,performance,indexing,fragmentation,maintenance-plan,Sql Server,Performance,Indexing,Fragmentation,Maintenance Plan,我有一个存储过程,它通常运行得很快(几乎不到几秒钟),但有时使用相同参数的同一个过程需要几分钟才能执行。但是如果我在此时对索引进行碎片整理,它会在几秒钟内再次开始运行 这可能是因为执行计划不好或索引不完整 如果是这样的话,有没有办法使这个过程不依赖于执行计划或分段索引 提前感谢,, Joseph简短回答:不是。SQL Server依赖于执行计划和索引来实现良好的性能 回答:也许吧。如果在对索引进行碎片整理后,性能立即提高,那么我的第一个问题是:哪些索引,以及它们为什么要进行碎片整理?您是否基于唯
Joseph简短回答:不是。SQL Server依赖于执行计划和索引来实现良好的性能
回答:也许吧。如果在对索引进行碎片整理后,性能立即提高,那么我的第一个问题是:哪些索引,以及它们为什么要进行碎片整理?您是否基于唯一标识符进行集群?你的统计数据是最新的吗?执行计划是什么样子的?好吧,根据您的SP,解决方案可能通过以下选项实现: 1/
重新编译可以节省您的时间。通过重新编译SP,这会增加总的执行时间,但可以确保您拥有最佳的执行计划
2/KEEPFIXED PLAN
也可以是一个选项
3/如果您有一组从统计角度来看具有“代表性”的参数,那么值得尝试使用优化
4/监控相关表和索引的碎片级别。检查是否有大量更新SP使用的表的语句。如果有,(updatestatistics;
)
5/参数嗅探也可能是根本原因
您可以进一步了解详细信息并查看。您应该尝试通过重新编译来执行它。您还应该包括您的程序。谢谢。让我试一试。能否提供有关此SP的更多详细信息?任何代码、代码片段、算法、参数都可能会给出更多提示……对不起,我是个新手。请您指导我如何理解它?谢谢Mihai,我将进一步探索这些选项。