Tôi đã phát hiện ra một vấn đề hiệu suất rất lớn trong LINQ to SQL.LINQ to SQL nvarchar problem
Khi chọn từ bảng bằng chuỗi, thông số được chuyển đến máy chủ sql luôn là nvarchar, ngay cả khi bảng sql là một varchar. Điều này dẫn đến việc quét bảng thay vì tìm kiếm, một vấn đề hiệu suất lớn.
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
Tham số được chuyển qua dưới dạng nvarchar, kết quả trong toàn bộ chỉ mục được chuyển đổi từ varchar sang nvarchar trước khi được sử dụng.
Nếu tham số là một varchar, đó là tìm kiếm rất nhanh.
Có cách nào để ghi đè hoặc thay đổi điều này không?
Cảm ơn Kính trọng Craig.
DBML của bạn trông như thế nào? – RobS
Đó là một cột varchar, không phải là cột nvarchar. tạo thử nghiệm bảng (kiểm tra varchar (200) không null) tạo chỉ mục ixtest trên kiểm tra (thử nghiệm) – Craig
Kế hoạch truy vấn cơ sở dữ liệu sử dụng CONVERT_IMPLICIT và quét thay vì tìm kiếm. Tôi nghĩ rằng đó là một vấn đề LINQ to SQL phổ biến. Tôi đang tìm một giải pháp thay thế cho phép các tham số được chỉ định chính xác. varchar (200) thay vào nvarchar (4) dẫn đến chuyển đổi. – Craig