|
12
|
| Klaus Byskov Pedersen · 技术社区 · 15 年前 |
|
|
1
5
(我将此作为一个单独的答案添加,因为它与我的第一个答案有很大的不同。) 好的,找到一些实际的文档。这个 MS KB article 说那里 是 不同排序规则之间的性能差异,但不是您认为的那样。区别在于 SQL排序规则 (向后兼容,但不支持Unicode)和 Windows排序规则 (支持Unicode):
SQL和Windows排序都有区分大小写和不区分大小写的版本,所以听起来这不是主要的问题。 丹优秀文章《战壕中的另一个好故事》 Collation Hell “:
他得出结论:
希望这有帮助。 |
|
2
6
如果更改数据库上的排序规则,则还必须单独更改每列上的排序规则-它们维护创建表时生效的排序规则设置。
结果:
|
|
|
3
5
我想说,在生产数据库中更改为区分大小写的排序规则的最大缺点是,许多查询(如果不是大多数)都会失败,因为它们当前被设计为忽略大小写。 我没有尝试在现有的数据库上更改排序规则,但我怀疑这样做也可能相当耗时。当这个过程也发生时,您可能必须完全锁定您的用户。不要尝试这个,除非你已经对dev进行了彻底的测试。 |
|
|
4
2
我找不到任何证据来证实 结构合理 查询在区分大小写的数据库和不区分大小写的数据库上工作得更快(尽管我怀疑差异可以忽略不计),但我清楚一些事情:
类似的查询:
不会在givenname上使用索引。你可能会想:
会更好,而且确实如此。但要获得最佳性能,您必须执行以下操作:
(见 this article 详细信息) |
|
|
5
1
如果更改了数据库排序规则而不是服务器排序规则(结果是它们不匹配),那么在使用临时表时要当心。除非其create语句中另有规定,否则它们将使用服务器的默认排序规则,而不是数据库的默认排序规则,该排序规则可能导致联接或与数据库的列进行其他比较(假设它们也被更改为数据库的排序规则,正如Damien_the Unbeliever所暗示的那样)失败。 |