Linq에서 SQL에 큰 성능 문제가 있음을 발견했습니다.Linq to SQL nvarchar 문제
문자열을 사용하여 테이블에서 선택하면 sql 테이블이 varchar 인 경우에도 sql 서버에 전달되는 매개 변수는 항상 nvarchar입니다. 이로 인해 검색이 아닌 테이블 스캔이 발생하여 성능 문제가 심각합니다.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
파라미터
전체 인덱스 초래 사용되기 전에 NVARCHAR하는 VARCHAR 변환되는 NVARCHAR로 통과한다.매개 변수가 varchar 인 경우 매우 빠르게 탐색됩니다.
재정의하거나 변경할 수있는 방법이 있습니까?
감사합니다. 감사합니다. 크레이그.
DBML의 모습은 어떻습니까? – RobS
이것은 varchar 열이며 nvarchar 열은 아닙니다. create table test (test varchar (200) not null) 테스트에서 인덱스 ixtest 생성 (테스트) – Craig
데이터베이스 쿼리 계획은 seek 대신 CONVERT_IMPLICIT 및 스캔을 사용합니다. SQL 문제에 대한 일반적인 LINQ라고 생각합니다. 매개 변수를 올바르게 지정할 수있는 해결 방법을 찾고 있습니다. varchar (200) 대신 nvarchar (4)로 변환됩니다. – Craig