J'ai découvert un énorme problème de performance dans Linq to SQL.Linq to SQL nvarchar problème
Lors de la sélection à partir d'une table à l'aide de chaînes, les paramètres transmis au serveur SQL sont toujours nvarchar, même si la table sql est un varchar. Cela se traduit par des scans de table au lieu de chercher, un problème de performance massif.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
Le paramètre est passé à travers un nvarchar, qui se traduit par l'indice entier étant converti à partir de varchar nvarchar avant d'être utilisé.
Si le paramètre est un varchar c'est une recherche très rapide.
Existe-t-il un moyen de remplacer ou de modifier cela?
Merci Cordialement Craig.
à quoi ressemble votre DBML? – RobS
C'est une colonne varchar, pas une colonne nvarchar. create test de table (test varchar (200) non null) create index ixtest on test (test) – Craig
Le plan de requête de base de données utilise CONVERT_IMPLICIT et un scan au lieu d'une recherche. Je pense que c'est un problème commun de LINQ à SQL. Je suis à la recherche d'une solution de contournement qui permettra de spécifier correctement les paramètres. varchar (200) à la place sur nvarchar (4) qui entraîne la conversion. – Craig