为什么成本不包括未在MySQL的查询计划器中筛选出的扫描成本的行的CPU成本?

时间:2017-08-07 16:47:00

标签: mysql

当MYSQL通过方法Optimize_table_order :: calculate_scan_cost(const JOIN_TAB * tab,....)计算扫描成本时,我们知道成本不包括执行期间未过滤掉的行的CPU成本方法评论。 所以通过减去rows_after_filtering来计算成本,如下面所示:

scan_and_filter_cost= prefix_rowcount *
  (tab->quick()->cost_est.total_cost() +
   cost_model->row_evaluate_cost(tab->found_records -
                                 *rows_after_filtering));

  scan_and_filter_cost= prefix_rowcount *
    (single_scan_read_cost +
     cost_model->row_evaluate_cost(tab->records() - *rows_after_filtering));

我的问题是,为什么成本包括未过滤掉的行在执行期间的CPU成本?它应该包含在我的脑海里。

https://github.com/mysql/mysql-server/blob/5.7/sql/sql_planner.cc#L712

0 个答案:

没有答案