【发布时间】:2019-09-21 03:32:25
【问题描述】:
我们使用 _SC 排序规则将 SQL Server 2016 作为应用程序的后端。应用程序本身是“区域感知的”并支持在多个区域中操作的客户。因此,数据库中的数据可以是“任何语言”。请求根据整个结果集中的用户区域设置按排序顺序对 UI 中显示的数据进行分页。团队不是将整个结果集传递给更高层并让他们进行分页,而是评估
- 将文化从 UI 层传递到不同的层,一直到数据库,
- 将区域性映射到 SQL Server 上的特定排序规则,然后
- 具有基于此映射排序规则的 SQL Server 排序和页面。 有没有更好的方法来做到这一点,或者这不是一个好主意,我们最好让更高层负责分页?根据我们的指导方针,数据库中禁止排序,但我想这是应该放宽这些指导方针的一个用例。
我研究了Does Microsoft SQL Server support localized name sorting? 和https://social.technet.microsoft.com/wiki/contents/articles/31194.t-sql-sort-data-by-multiple-languages.aspx,这个概念是这两种方法的“联合”
【问题讨论】:
-
第2步不清楚:你是一直只想根据用户的locale排序规则,还是想根据用户的locale自定义排序规则?示例可能会有所帮助。
-
好消息:无论您选择哪种解决方案,性能都会下降,因为没有任何层(包括数据库)可以通过这种方式有效地使用索引,因此您可以做任何最方便的事情。请注意,虽然不传递整个结果集确实可以改善问题,但您仍然会让 SQL Server 落后,以便根据用户这次想要的任何内容对整个表进行排序。祈祷他们实际上不会在页面上来回走动太多。
-
@TabAlleman,我们希望根据用户区域设置的排序规则进行排序。我们还没有考虑自定义排序...你能澄清一下什么时候起作用吗?
-
@Jeroen Mostert,我明白有些或其他层必须付费。 “直觉”是在 SQL Server 上执行此操作会更便宜。在测试这个理论之前,我想检查一下社区是否有强烈的反对意见。
标签: sql-server paging