sql查询:
SELECT t1.col_A, t2.col_A, t2.col_B
FROM t1
INNER JOIN t2.ID = t1.t2_ID
WHERE t1.active = 1
ORDER BY t2.col_A ASC, t2.col_B ASC, t1.col_A ASC
LIMIT 0,100
表t1索引:
身份证件
科卢a
积极的
t2\U标识
表t2指标:
身份证件
科卢a
b列
在现实生活中,表不共享列名。
这里最重的是 ORDER BY
,则查询需要0.001秒,根据表的大小,查询需要9到10秒。
我在确定如何优化此查询时遇到问题。
按要求编辑,添加 EXPLAIN
输出:
2条答案
按热度按时间4nkexdtk1#
试试这个,我希望能有点不同
vaqhlq812#
对于此查询,您需要两个索引:
索引为:
t1(active, t2_id, col_a)
t2(id, col_a, col_b)
如果id
是主键。不幸的是,没有办法(除了使用临时表)避免对
order by
,因为它正在合并来自不同表的列。