为什么SQL会变得昂贵?

时间:2013-12-11 10:22:42

标签: sql-server casting database-performance

我想知道这是什么背景解释?我从测试实例中看到,铸造是非常耗时的,但我不知道为什么因为我不知道后面的机制,我想详细说明。

我发现这是因为转换使用会禁用索引使用,但在下面的示例中,我们仅在查询结果中使用强制转换,而所有联接都在没有强制转换的情况下完成。这里的转换仅用于使我们使用distinct子句,因为它对ntext列不起作用。因此,索引不应受此影响,但与没有distinct和cast的相同查询相比,执行时间差异非常明显:

select distinct 
    cast(Table1.NtextColumnName1 as NVARCHAR(MAX)), ...
from Table1 join Table2 on Table1.ColumnName2 = Table2.ColumnName3
    join ...

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

我不认为CAST耗费时间,可能是DISTINCT,因为这需要服务器检查所有Table1.NtextColumnName1值的内容,对它们进行排序和将它们相互比较以找到唯一值。