Odkryłem ogromny problem z wydajnością w Linq do SQL.Problem z Linq na SQL nvarchar
Podczas wybierania z tabeli za pomocą ciągów parametry przekazywane do serwera sql są zawsze nvarchar, nawet jeśli tabela sql jest varcharem. Powoduje to skanowanie tabeli zamiast poszukiwań, ogromny problem z wydajnością.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
Parametr przepuszcza się jako nvarchar, co powoduje, że cały wskaźnik jest przekształcany z VARCHAR nvarchar przed użyciem.
Jeśli parametr jest varchar, jest to bardzo szybkie wyszukiwanie.
Czy istnieje sposób, aby to zmienić lub zmienić?
Dzięki Pozdrawiam Craig.
Jak wygląda Twój DBML? – RobS
To jest kolumna varchar, a nie kolumna nvarchar. utwórz test tabeli (test varchar (200) nie ma wartości null) utwórz indeks ixtest w teście (test) – Craig
Plan kwerend baz danych używa CONVERT_IMPLICIT i skanowania zamiast przeszukiwania. Myślę, że jest to typowy problem LINQ to SQL. Szukam obejścia, które pozwoli poprawnie określić parametry. varchar (200) zamiast na nvarchar (4), który powoduje konwersję. – Craig