He descubierto un gran problema de rendimiento en Linq a SQL.Problema nvarchar de SQL a SQL
Al seleccionar de una tabla que utiliza cadenas, los parámetros pasados al servidor sql son siempre nvarchar, incluso cuando la tabla sql es varchar. Esto da como resultado exploraciones de tabla en lugar de búsquedas, un problema de rendimiento masivo.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
el parámetro se pasa a través de como nvarchar, lo que resulta en todo el índice que se convierte de varchar a nvarchar antes de ser utilizados.
Si el parámetro es un varchar es una búsqueda muy rápida.
¿Hay alguna manera de anular o cambiar esto?
Gracias Saludos Craig.
¿Cómo es tu DBML? – RobS
Es una columna varchar, no una columna nvarchar. create table test (prueba varchar (200) not null) create index ixtest on test (test) – Craig
El plan de consulta de la base de datos usa CONVERT_IMPLICIT y un escaneo en lugar de una búsqueda. Creo que es un problema común de LINQ to SQL. Estoy buscando una solución que permita que los parámetros se especifiquen correctamente. varchar (200) en cambio en nvarchar (4) que da como resultado la conversión. – Craig