mysql 查询优化 ~ 多表查询基础知识
一 什么是驱动表 1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表]; 2)未指定联接条件时,行数少的表为[驱动表](Important!)。 表现 explain第一行出现的就是驱动表 二 多表查询的分类 1 多表join查询 2 多表join+子查询 三 驱动表的分类 1 单表 单表执行顺序有2种情况 1 单表先执行条件过滤,结算出结果再进行关联join 2 单表先进行关联join,再结果进行条件过滤 可以根据explain驱动表的索引选择进行判断是根据哪种情况执行 1 选择条件索引,先过滤 2 选择连接字段索引,先关联 2 派生表 explain->type-><derived>名称 即为派生表 eg SELECT column_list FROM (SELECT column_list FROM table_1) derived_table_nameWHERE derived_table_name.column > 1 注意 执行的是 select from之后 where和join之前的语句 执行顺序 1 执行子查询的内容 2 把子查询的结果写到临时表中 3 回读,应用上层SELECT的WHERE条件 四 多表查询几点注意 1 对驱动表可以直接排序,对非驱动表(的字段排序)需要对循环查询的合并结果(临时表)进行排序 2 一旦连接字段没有应用索引