假设我们有一个包含当前信息的表“月”和包含历史信息的表“年”的模式。每个表有大约 65,000 行。
这个模式存在于几个地方,比如地方 A、B 和 C。
要求从每个模式中获取有序信息。没有可能的“物化视图”
据我说,我需要统一所有结果(没有限制):
CREATE VIEW all_results AS
SELECT * FROM A.month
UNION ALL
SELECT * FROM A.year
UNION ALL
SELECT * FROM B.month
....
...然后应用 ORDER BY、COUNT 和 LIMIT
SELECT * FROM all_results ORDER BY column1 LIMIT 0,23
SELECT count(*) FROM all_results
但是这种方法需要将近 20 秒(这对于 Web 解决方案来说太多了)。
有一个更好的方法吗?
(从 dup 问题添加)此变体也需要 20 秒。
SELECT SQL_CALC_FOUND_ROWS * FROM(
SELECT * FROM A.month
UNION ALL
SELECT * FROM A.year
UNION ALL
SELECT * FROM B.month
....
) AS united
LIMIT 0,23
并计算总数:SELECT FOUND_ROWS()