Ho scoperto un enorme problema di prestazioni in Linq in SQL.Problema nvarchar da Linq a SQL
Quando si seleziona da una tabella utilizzando stringhe, i parametri passati a SQL Server sono sempre nvarchar, anche quando la tabella sql è un varchar. Ciò si traduce in scansioni di tabelle anziché ricerche, un enorme problema di prestazioni.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
Il parametro viene passato attraverso un nvarchar, che determina l'intero indice viene convertito da varchar a nvarchar prima di essere utilizzato.
Se il parametro è un varchar è una ricerca molto veloce.
C'è un modo per sovrascrivere o modificare questo?
Grazie Cordiali saluti Craig.
come si presenta il DBML? – RobS
È una colonna varchar, non una colonna nvarchar. Crea test tabella (test varchar (200) non null) creazione indice ixtest su test (test) – Craig
Il piano di query del database utilizza CONVERT_IMPLICIT e una scansione anziché una ricerca. Penso che sia un problema comune LINQ a SQL. Sto cercando una soluzione che permetta di specificare i parametri correttamente. varchar (200) invece su nvarchar (4) che risulta nella conversione. – Craig