sql-server – SQL Server排序规则选择
今天晚上我花了很多时间尝试找到有关在SQL Server 2008 R2安装中应用的归类选择的指导,但几乎所有的在线基本上都是“选择适合你的”.非常无益
我的上下文是新的应用开发.我不担心与先前版本的SQL Server的向后兼容性(即< = 2005).我非常希望存储代表全球各地语言的数据 - 不仅仅是拉丁语.我在网上找到了很少的帮助,建议我应该避免所有的“SQL_”整理.这使我选择使用基于Windows语言环境的二进制或“非二进制”排序规则. 如果我使用二进制,我收集我应该使用“BIN2”.所以这是我的问题.如何确定我应该使用BIN2还是使用“Latin1_General_100_XX_XX_XX”?我的蜘蛛感告诉我,BIN2将提供“不太准确”的排序规则,但对于所有语言(和快速!)更为通用.我也怀疑二进制排序规则是区分大小写的,口音敏感的,和假名敏感的(是?).相比之下,我怀疑非二进制排序规则对于基于拉丁语言的语言最有效. 文档不支持我上面的说法,我正在做出有经验的猜测.但这是问题!为什么在线文档太薄了,选择留给猜测?即使是“SQL Server 2008内部”一书也讨论了多种选择,而不解释为什么和何时选择二进制排序规则(与非二进制窗口排序规则相比较). Criminy! 解决方法“SQL Server 2008内部”对主题imho进行了很好的讨论.二进制排序规则很棘手,如果您打算支持文字搜索,那么最好使用非二进制文件.如果您调整了所有其他功能(第一种架构),并且在区分大小写和重音灵敏度是所需行为的情况下(例如密码哈希),则二进制文件很有可能获得一点点性能.二进制整理实际上是“更精确”的,因为它不考虑类似的文本.只有在机器上排序的排序才有效. SQL_ *排序规则和本机窗口之间只有一点区别.如果你没有受到兼容性的限制,那么去做本地的,因为他们是前进的方式. 整理决定了排序顺序和平等.你选择什么,最适合你的用户.据了解,您将使用unicode类型(如nvarchar)来支持国际文本.排序规则影响可以存储在非unicode列中的内容,这不会影响您. 真正重要的是,您避免在WHERE子句中混合排序规则,因为这是您不使用索引支付罚款的地方. Afaik没有任何银弹对齐来支持所有语言.您可以为大多数用户选择一个,也可以为每种语言使用不同的列进行本地化支持. 一个重要的是使服务器排序规则与数据库排序规则相同.如果您使用“CREATE TABLE #ttt …”创建的临时表作为临时表,则会使您的生活变得更加容易,并且您将遇到需要解决的排序规则冲突指定一个明确的排序规则.这也有性能影响. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |