MYSQL order by排序导致效率低小优化
发布时间:2022-03-23 18:42:45 所属栏目:MySql教程 来源:互联网
导读:有一个主表left join 同一个小表两次分页语句,因为order by 导致执行时做排序,从执行计划中Using filesort ,以及profile中creating sort index 耗时可以看出。 从trace文件可以看出filesort的计算: join_execution: { select#: 1, steps: [ { filesort_i
有一个主表left join 同一个小表两次分页语句,因为order by 导致执行时做排序,从执行计划中Using filesort ,以及profile中creating sort index 耗时可以看出。 从trace文件可以看出filesort的计算: "join_execution": { "select#": 1, "steps": [ { "filesort_information": [ { "direction": "desc", "table": "`topxxx` `t`", "field": "create_date" } ] /* filesort_information */, "filesort_priority_queue_optimization": { "limit": 20, "rows_estimate": 2302749, "row_size": 264, "memory_available": 4194304, "chosen": true } /* filesort_priority_queue_optimization */, "filesort_execution": [ ] /* filesort_execution */, "filesort_summary": { "rows": 21, "examined_rows": 216594, "number_of_tmp_files": 0, "sort_buffer_size": 5712, "sort_mode": "<sort_key, rowid>" } /* filesort_summary */ } ] /* steps */ } /* join_execution */ } 后面通过索引加入排序字段后减去排序操作,排序字段放在索引的最前面。 create index idx_topxxx1 on topic (create_date desc,is_del,is_en); trace 中可以看出排序使用了索引。 "reconsidering_access_paths_for_index_ordering": { "clause": "ORDER BY", "index_order_summary": { "table": "`topic` `t`", "index_provides_order": true, "order_direction": "desc", "index": "idx_topxxx1", "plan_changed": true, "access_type": "index" } /* index_order_summary */ } /* reconsidering_access_paths_for_index_ordering */ }, { 以此记录。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |