【发布时间】:2018-09-05 23:52:20
【问题描述】:
我在网页上(使用 datatable.js)得到了一个复杂的表格,它与 3 个不同的“来源”一起使用。这个数据表是前面分页的,后面没有。
我想把分页的服务器处理,我的请求有效,但我想优化它:
SELECT toto, titi
FROM
(SELECT toto, titi
FROM S1
UNION
SELECT toto, titi
FROM S2
UNION
SELECT toto, titi
FROM S3)
ORDER BY titi, toto
OFFSET 50 ROWS FETCH NEXT 50 ROWS ONLY
我的真实代码更复杂,但你在这里有我的问题的主要思想。
S1、S2 和 S3 可能各有 1 000 000 行,但最后我只需要 50 行,知道如何提高效率吗?
【问题讨论】:
-
不确定您是否能够更快地完成此操作。你可以改用
union all吗?这不会删除重复项,但应该会稍微快一些... -
更好的方法是将每个选择查询中的查询限制为 50,并将它们合并。毕竟,再次将它们限制在 50 以内。
-
是的 Muhammad,但我最后有一个 ORDER BY,所以我真的不知道要在 UNION 之前过滤哪一行。谢谢 sgeddes,我会做的。
标签: sql sql-server pagination union