sql-server – 找不到足够好的计划的查询
我有一个SQL Server 2012数据库.我留意到一些查询提前终止语句优化的Reason的代价,而且都给出了足够好的打算.此刻我的题目是: >什么是也许的范例“提前终止的缘故起因 > Finding: Query Compilation 办理要领>超出内存限定因为内存压力,优化器被迫遏制探求更好的打算更换方案.应该观测和更正缘故起因,然后再次实行查询编译.返回的打算很也许不是优化器在没有低内存前提时选择的打算. 这个缘故起因很轻易被误解. 查询优化器旨在快速找到公道的打算.它没有举办细致的搜刮以找到最佳的打算.通过计划,它可以停止在优化上耗费更多时刻.个中一个成果可以确保这是’超时'(不是时刻的权衡尺度). 优化器按照逻辑查询的伟大性,基数预计以及迄今为止发明的最自制打算的预计本钱(假若有的话)配置本身的“勘察预算”.具有更高基数的更伟大查询被赋予更高的预算. 假如在个中一个搜刮阶段超出此预算,则阶段竣事.这是优化器的计划和正常操纵的一部门.必要更多优化事变的查询才气得到;那些不,不. 将“超时”想象为“找到足够好的打算”. 这意味着与空缺缘故起因完全沟通.这只是一个汗青怪癖,打算本钱低于0.909090 …(1 / 1.1)标志为这种方法.当呈现此缘故起因时,优化器代码中没有任何内容提前遏制或以其他方法非凡处理赏罚或差异. 除了超出内存限定之外,没有任何“提前终止缘故起因”对查询调优或机能说明意味着许多(假若有的话).我一样平常城市忽略它们. 忠告 基于现实机能指标(颠末时代,CPU /内存行使,……在上下文中重要的任何内容)来定位查询调优事变.假如查询对付其预期目标来说太慢,请花时刻加速速率.丈量现实机能,将其与基线和汗青举办较量,并针对重要差别举办方针调解. 将担保干净的数据存储在恰当的相关模式中,包括有效的统计信息和索引,以及编写精采且易于优化的查询. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |