我在Azure SQL (Tier S3) and SQL Server (12.0).
上的同一个数据库副本上运行相同的查询,执行计划不同,Azure的性能似乎更差。DB是一个精确的副本,包含相同的索引。当观察执行计划时,Estimated Subtree Cost on SQL Server is 0.325 while on Azure SQL it is 1.431
。执行时间的最大百分比由其中一个表上的聚集索引获取。这部分查询执行的相对比例在Azure SQL (84%) and SQL Server (52%)
之间是不同的。
现在我的问题是:
我应该关心Azure SQL查询的性能吗?
如果您认为执行计划的差异是一个问题,请您提供建议,如果您有任何想法如何进一步诊断或找到一种方法来改进Azure SQL查询?如果有更多的信息我可以提供,请告诉我。
编辑: Server执行计划:
Azure SQL执行计划:
发布于 2016-06-06 07:18:14
在两种instances.Total计划成本中,计划都是相同的--一直到100%.So --您可能会看到一个运营商的成本比另一个运营商高,但是所有的总和都高达100%。
我并不是说密钥查找不好,但是那些是随机读取的.From --我可以看到一个表被访问了两次(查找和查找).So--我建议在测试后添加修改下面的索引
这个索引[IX_InstantMessageThreadAccesses_ProfileId]
应该有多一个键列(归档),并包含这个列(kastreadon).By,这样您就可以避免几乎44%的查询成本,并且在选择新计划时会产生SQL。
此外,我可以看到您的统计数据不是要更新的,我建议对所有使用huge扫描的表进行更新统计(如果表非常大,这可能会导致大量的I/O活动).
UPDATE STATISTICS <<tablename>> WITH FULLSCAN
更新问题,如果您有任何进一步的问题,现在完成的步骤和任何分歧,您正在看到
https://stackoverflow.com/questions/37654865
复制