1
我想知道这是什么背景解释?我从测试示例中看到,投射非常耗时,但我不明白为什么因为我不知道后面的机制,所以我想详细解释它。SQL为什么会变得昂贵?
我发现某处这是因为投射使用会禁用索引使用,但在下面的示例中,我们仅在查询结果中使用了投射,而所有连接均在不投射的情况下完成。这里的投射仅用于使我们能够使用不同的子句,因为它不适用于ntext列。因此,指标应该不会受到此影响,但执行的时间差是如此明显比较相同的查询,而无需独特和投:
select distinct
cast(Table1.NtextColumnName1 as NVARCHAR(MAX)), ...
from Table1 join Table2 on Table1.ColumnName2 = Table2.ColumnName3
join ...
感谢您的时间。
ntext列可能包含大量数据,这会使投射变慢。如果您必须使用ntext,请考虑向表中添加哈希列,并在插入新行或更新ntext列时计算哈希。然后,使用散列来查找不同的值。 – Dan
我通常不知道为什么强制转换用法将不得不禁用索引使用,当通常在cast上加入时(table1.column1)= table2.column2可以通过使用table2.column2上的索引进行搜索并与每次转换后的值进行比较通过table1行迭代table1.column1? –