我想知道这是什么背景解释?我从测试实例中看到,铸造是非常耗时的,但我不知道为什么因为我不知道后面的机制,我想详细说明。
我发现这是因为转换使用会禁用索引使用,但在下面的示例中,我们仅在查询结果中使用强制转换,而所有联接都在没有强制转换的情况下完成。这里的转换仅用于使我们使用distinct子句,因为它对ntext列不起作用。因此,索引不应受此影响,但与没有distinct和cast的相同查询相比,执行时间差异非常明显:
select distinct
cast(Table1.NtextColumnName1 as NVARCHAR(MAX)), ...
from Table1 join Table2 on Table1.ColumnName2 = Table2.ColumnName3
join ...
感谢您的时间。
答案 0 :(得分:1)
我不认为CAST
耗费时间,可能是DISTINCT
,因为这需要服务器检查所有Table1.NtextColumnName1值的内容,对它们进行排序和将它们相互比较以找到唯一值。