我有一张巨大的桌子,我想要简单的排序.
它可能很容易.我可以创建一个索引并通过该索引进行一些非常快速的排序.
但我的客户想要将NULL放到最后,这使整个情况变得复杂.
而不是简单:SORT BY name ASC我必须这样做SORT BY name IS NULL ASC, name ASC.那没关系,但是因为我的索引没用,而且排序很慢.
我不知道是否有办法解决这个问题,但如果有的话,我拼命寻求帮助.:'(
UNION ALL不保证保留记录顺序,但是对于当前实现,最终ORDER BY将只对已经排序的字段进行一次传递:
SELECT *
FROM (
SELECT 1 AS source, *
FROM user
WHERE name IS NOT NULL
ORDER BY
name
)
UNION ALL
SELECT 2 AS source, *
FROM user
WHERE name IS NULL
ORDER BY
source, name
Run Code Online (Sandbox Code Playgroud)
省略决赛ORDER BY可能会在将来破坏您的申请.
这可能是在客户端将查询拆分为两个的最佳情况之一.
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |