gpt4 book ai didi

sql-server - SQL Server 排序规则选择

转载 作者:行者123 更新时间:2023-12-02 07:16:21 25 4
gpt4 key购买 nike

今晚我花了很多时间试图找到有关在 SQL Server 2008 R2 安装中应用哪种排序规则的指南,但几乎所有在线内容基本上都在说“选择适合您的排序规则”。 极其没有帮助。

我的背景是新应用程序开发。我不担心与 SQL Server 之前版本(即 <= 2005)的向后兼容性。我对存储代表全局语言的数据非常感兴趣 - 不仅仅是拉丁语。我在网上找到的很少的帮助表明我应该避免所有“SQL_”排序规则。这将我的选择范围缩小到使用基于 Windows 区域设置的二进制或“非二进制”排序规则。

如果我使用二进制,我认为我应该使用“BIN2”。这就是我的问题。如何确定是否应该使用 BIN2 还是仅使用“Latin1_General_100_XX_XX_XX”?我的蜘蛛感知告诉我,BIN2 将提供“不太准确”的排序规则,但对所有语言都更通用(而且速度更快!)。我还怀疑二进制排序规则区分大小写、区分重音和区分假名(是吗?)。相反,我怀疑非二进制排序规则最适合基于拉丁语的语言。

该文档不支持我的上述主张,我正在做出有根据的猜测。但这就是问题所在!为什么在线文档如此薄弱,以至于只能靠猜测来选择?甚至“SQL Server 2008 Internals”一书也讨论了各种选择,但没有解释为什么以及何时选择二进制排序规则(与非二进制 Windows 排序规则相比)。犯罪!!!

最佳答案

“SQL Server 2008 Internals”对这个主题进行了很好的讨论,恕我直言。

二进制排序规则很棘手,如果你打算支持人类的文本搜索,你最好使用非二进制排序规则。如果您已经调整了其他所有内容(首先是架构),并且在区分大小写和区分重音是所需行为的情况下(例如密码哈希),则二进制文件可以很好地获得一点性能。二进制排序规则实际上“更精确”,因为它不考虑相似的文本。不过,您从中得到的排序顺序仅适用于机器。

SQL_* 排序规则和 native Windows 排序规则之间只有细微的差别。如果您不受兼容性的限制,请选择原生的,因为据我所知,它们是前进的方向。

排序规则决定排序顺序和相等性。您可以选择真正最适合您的用户的内容。据了解,您将为数据使用 unicode 类型(如 nvarchar)以支持国际文本。排序规则会影响非 unicode 列中可以存储的内容,但这不会影响您。

真正重要的是避免在 WHERE 子句中混合排序规则,因为这就是您不使用索引而支付罚款的地方。据我所知,没有支持所有语言的银弹排序规则。您可以为大多数用户选择一个,也可以为每种语言提供不同的本地化支持列。

一件重要的事情是让服务器排序规则与数据库排序规则相同。如果您计划使用临时表作为临时表(如果使用“CREATE TABLE #ttt...”创建)选择服务器排序规则,那么您的生活会变得更加轻松,并且您会遇到需要解决的排序规则冲突指定显式排序规则。这也会对性能产生影响。

关于sql-server - SQL Server 排序规则选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com