我在Linq to SQL中发现了一个巨大的性能问题。Linq to SQL nvarchar问题
从表中选择使用字符串时,传递给sql server的参数始终为nvarchar,即使sql表是varchar。这导致表扫描而不是搜索,这是一个巨大的性能问题。
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
该参数被穿过作为nvarchar的,从varchar被转换在使用前为nvarchar这导致整个索引。
如果参数是一个varchar,它是一个非常快的搜索。
有什么办法可以覆盖或改变它?
谢谢 Registers Craig。
你的DBML是什么样的? – RobS 2009-11-09 06:44:12
它是一个varchar列,不是nvarchar列。 创建表测试(测试varchar(200)非空) 在测试(测试)上创建索引ixtest – Craig 2009-11-09 07:18:20
数据库查询计划使用CONVERT_IMPLICIT和扫描而不是查找。我认为这是一个常见的LINQ to SQL问题。 我正在寻找一种可以正确指定参数的解决方法。 varchar(200)而不是nvarchar(4)导致转换。 – Craig 2009-11-09 07:20:10