MySQL 横向分表后列表查询优化方案
MySQL 横向分表后,列表查询需要在每个分表中执行。可以使用 UNION 操作将多个分表的查询结果合并到一起,然后再进行排序、分页等操作。
例如,假设有两个分表 't1' 和 't2',它们的结构相同,都有 'id'、'name' 和 'age' 三个字段,现在需要查询它们的所有记录并按照 'age' 字段降序排序,可以使用以下 SQL:
SELECT id, name, age FROM t1
UNION ALL
SELECT id, name, age FROM t2
ORDER BY age DESC;
其中,UNION ALL 表示将两个查询结果合并,不去重;ORDER BY age DESC 表示按照 'age' 字段降序排序。
如果需要进行分页操作,可以在最外层的查询语句中使用 LIMIT 和 OFFSET 子句,例如:
SELECT id, name, age FROM (
SELECT id, name, age FROM t1
UNION ALL
SELECT id, name, age FROM t2
ORDER BY age DESC
) AS combined_tables
LIMIT 10 OFFSET 20;
其中,LIMIT 10 表示每页显示 10 条记录,OFFSET 20 表示从第 21 条记录开始显示。注意,在使用 UNION 操作时,需要将最外层的查询语句放在一个子查询中,以便于使用 LIMIT 和 OFFSET 子句。
原文地址: https://www.cveoy.top/t/topic/mtag 著作权归作者所有。请勿转载和采集!