Linq to SQL'de büyük bir performans sorunu keşfettim.Linq'den SQL nvarchar'a sorun
Dizeleri kullanarak bir tablodan seçim yaparken, sql tablosu bir varchar olduğunda bile sql sunucusuna iletilen parametreler her zaman nvarchar olur. Bu, büyük bir performans sorunu olan aramalar yerine tablo taramasıyla sonuçlanır.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
parametre
bütün endeks ile sonuçlanmaktadır kullanılmadan önce nvarchar varchar dönüştürülen bir nvarchar olarak geçirilir.Parametre bir değişken ise, çok hızlı bir aramadır.
Bunu geçersiz kılmanın veya değiştirmenin bir yolu var mı?
Teşekkürler Saygılarımızla Craig.
DBML'niz nasıl görünüyor? – RobS
Bir varchar sütunu, bir nvarchar sütunu değil. tablo yarat create (test varchar (200) null değil) index oluştur create ixtest testte (test) – Craig
Veritabanı sorgu planı CONVERT_IMPLICIT ve tarama yerine arama kullanır. Bence SQL problemi için yaygın bir LINQ. Parametrelerin doğru şekilde belirtilmesine olanak tanıyan bir geçici çözüm arıyorum. Varchar (200) yerine nvarchar (4) ile sonuçlanır. – Craig