前情提要 : 需求就是一个普通的两个表连接从而查询出详细信息。其中A表是大表, 测试数据都有数万条; B表是小表大概1000多条数据。
1. 为了赶工写出的未优化SQL(为突出主题, 返回字段用 * 代替不写出详细字段, WHERE条件也去掉了):
SELECT
*
FROM
A a
LEFT JOIN
B b
ON
a.JOB_ID = b.ID
耗时:3.712s
rows字段代表这个步骤相对上一步结果每一行需要扫描的行数,可以看到这个sql需要扫描的行数为22711*1230, 这几乎是两个表做笛卡尔积的开销了(select * from a, b)。