记录一下在select过程中调用到的一系列函数,以后重点看,尤其是优化部分!!!
在将SQL语句解析后,以连接的顺序形成一个查询基表的队列,。
对select语句的处理有两种方式:
一种是带union的操作
一种是单独的select语句
所有select操作的入口函数为:
handle_select
——mysql_union() //含有union操作
SELECT_LEX_UNIT:prepare()
SELECT_LEX_UNIT:exec()
SELECT_LEX_UNIT:cleanup()
——mysql_select() //仅包含select操作
JOIN:Prepare() //准备
JOIN:optimize() //优化
JOIN:exec() //执行
JOIN:cleanup() //清理
优化:
1.simplify_joins():外连接转化为内连接,将节点on_expr合并到where中
2.optimize_cond():优化条件语句
3.make_join_statistics:收集统计信息