Azure的SQL查询性能问题
问题描述:
我竞选对手的Azure的SQL数据库查询...Azure的SQL查询性能问题
select Id
from Table1
WHERE ([Table1].[CustomFieldString2] IS NULL) AND
(N'New' = [Table1].[CustomFieldString7]) AND (0 = [Table1].[Deleted])
该查询运行速度快大约300毫秒......
只要我添加另一列我的选择(布尔)在
Select Id, IsActive
我的查询是超级慢(分钟)
这没有任何意义...
当时如果有人知道这可能是
答
总之,当你添加不属于索引到select
那么SQL不能选择相同的执行计划的一部分列疑惑。
如果SQL估计行数较少,那么它将选择在执行计划中使用嵌套查找。如果估算错误,这可能需要更多时间。
如果有更多的行或密钥查找开销超过某个阈值,SQL可能会决定对表进行扫描可能更有效。
如果查询性能不可接受,则尝试将isactive
添加到包含的列列表中。
答
您查询的结构当然很重要,但Azure自然很慢。是使用云系统,所以它不是那么快(我假设使用免费版本)。我没有看到任何人对天青速度的乐趣。 (低价)
不是很多去这里。过滤器中的字段是否有索引?如果是这样,那么SQL Azure不需要去数据库中获取第一个查询中的id,因为它是主键,而索引本身会拥有该值的副本。 – MikeS
请解释什么是N'New' – scaisEdge
N'New'使'新'字面屏幕成为unicode字符串而不是ASCII字符串 – MikeS