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? –