Azure的SQL查询性能问题

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 

我的查询是超级慢(分钟)

这没有任何意义...

当时如果有人知道这可能是

+0

不是很多去这里。过滤器中的字段是否有索引?如果是这样,那么SQL Azure不需要去数据库中获取第一个查询中的id,因为它是主键,而索引本身会拥有该值的副本。 – MikeS

+0

请解释什么是N'New' – scaisEdge

+1

N'New'使'新'字面屏幕成为unicode字符串而不是ASCII字符串 – MikeS

总之,当你添加不属于索引到select那么SQL不能选择相同的执行计划的一部分列疑惑。

如果SQL估计行数较少,那么它将选择在执行计划中使用嵌套查找。如果估算错误,这可能需要更多时间。

如果有更多的行或密钥查找开销超过某个阈值,SQL可能会决定对表进行扫描可能更有效。

如果查询性能不可接受,则尝试将isactive添加到包含的列列表中。

您查询的结构当然很重要,但Azure自然很慢。是使用云系统,所以它不是那么快(我假设使用免费版本)。我没有看到任何人对天青速度的乐趣。 (低价)