Sql server SQL Server中的字符串连接性能

Sql server SQL Server中的字符串连接性能,sql-server,concatenation,string-concatenation,Sql Server,Concatenation,String Concatenation,我有一个针对SQL Server 2016的查询。 该查询相当复杂,因为它使用内部联接和左联接联接多个表(几乎30个表)。结果集仅包含4行 我有这些案例: 在选择列表中,我只选择“简单列”,没有函数,也没有连接:执行时间约为3/4秒 在选择列表中,我只在一个字段(一个varchar字段)上使用字符串连接,该字段包含一个空字符串(select a.field+'',.)。执行时间显著增长;在某些情况下,根据我将空字符串连接到的字段,它以11秒的速度到达 在一个特定的表中,如果我连接两个字段,执行时

我有一个针对SQL Server 2016的查询。 该查询相当复杂,因为它使用内部联接和左联接联接多个表(几乎30个表)。结果集仅包含4行

我有这些案例:

  • 在选择列表中,我只选择“简单列”,没有函数,也没有连接:执行时间约为3/4秒
  • 在选择列表中,我只在一个字段(一个
    varchar
    字段)上使用字符串连接,该字段包含一个空字符串(
    select a.field+'',.
    )。执行时间显著增长;在某些情况下,根据我将空字符串连接到的字段,它以11秒的速度到达
  • 在一个特定的表中,如果我连接两个字段,执行时间保持在3/4秒,如果我用一个空字符串连接这两个字段中的一个,执行时间将增长到11秒
  • 我很惊讶,我不明白为什么连接操作如此昂贵! 我尝试使用
    CONCAT
    函数,但没有任何变化


    PS:我每次执行查询时都会清除缓存,因此执行时间不受缓存策略的影响。

    由于“复杂”的查询,这里可能会发生很多事情。在不知道数据模型、索引等的情况下,我们所能做的就是在黑暗中拍摄这一点。连接并不特别昂贵-但是,这并不是SQL Server最擅长的。类似这样的问题可能更适合数据库管理员,您应该为每个查询添加执行计划。我会使用这个工具: