【发布时间】:2011-09-02 23:50:12
【问题描述】:
我只想检查几件事:
Q1) Latin1_General_CI_AS 不区分大小写,区分重音:即SQL 会将以下内容视为相等 - “hello”和“HELLO”
我经常使用 LINQ:
db.Where(v => v.Email == "some email".ToLower())
Q2) 假设我对 Q1 的理解是正确的,我是否只是在浪费处理时间在我的查询中调用 ToLower()?
Q3) 有人知道使用 Latin1_General_bin 是否会比使用 Latin1_General_CI_AS 提高性能吗?即已经在博客等上进行了性能测试(在我写这篇文章时想到了这一点,所以还没看我自己)
【问题讨论】:
-
排序规则不仅会影响这些查找,还会影响排序顺序。您的查询是否曾经在这些列上使用过
order by?如果是这样,您期望这些语义是什么? -
一般不会。老实说,这取决于查询的性质。我是否正确地说大小写/重音敏感性是影响排序顺序的事情?
-
Latin1_General_bin会将A,B,a,b(大写优先)和Latin1_General_CI_AS排序为A,a,B,b。我不记得有关排序规则如何影响排序的所有血腥细节。 -
Per this other question's answer:“微软优化了
ToUpperInvariant(),而不是ToUpper()。不同之处在于不变量对文化更友好......”
标签: sql sql-server linq performance collation