我在Linq to SQL中發現了一個巨大的性能問題。Linq to SQL nvarchar問題
從表中選擇使用字符串時,傳遞給sql server的參數始終爲nvarchar,即使sql表是varchar。這導致表掃描而不是搜索,這是一個巨大的性能問題。
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
該參數被穿過作爲nvarchar的,從varchar被轉換在使用前爲nvarchar這導致整個索引。
如果參數是一個varchar,它是一個非常快的搜索。
有什麼辦法可以覆蓋或改變它?
謝謝 Registers Craig。
你的DBML是什麼樣的? – RobS 2009-11-09 06:44:12
它是一個varchar列,不是nvarchar列。 創建表測試(測試varchar(200)非空) 在測試(測試)上創建索引ixtest – Craig 2009-11-09 07:18:20
數據庫查詢計劃使用CONVERT_IMPLICIT和掃描而不是查找。我認爲這是一個常見的LINQ to SQL問題。 我正在尋找一種可以正確指定參數的解決方法。 varchar(200)而不是nvarchar(4)導致轉換。 – Craig 2009-11-09 07:20:10