有一個主表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 */
},
{
以此記錄。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。