正排倒排,并不是 MySQL 的排序的全部!
閱讀本文大概需要 2 分鐘。
作者:溫安適
來源:https://my.oschina.net/floor/blog/4961581
引言
兩個(gè)核心參數(shù)
全字段排序
Rowid排序
優(yōu)化手段覆蓋索引
例子
explain
SELECT order_id,pay_date FROM orders_detail WHERE order_id='1001' ORDER BY pay_date asc

ALTER TABLE `orders_detail` DROP INDEX `order_id`,ADD INDEX `order_id` (`order_id`, `pay_date`);
explain
SELECT order_id,pay_date FROM orders_detail WHERE order_id='1001' ORDER BY pay_date asc

特殊情況 Order by+ Limit
開啟優(yōu)化追蹤
SET OPTIMIZER_TRACE="enabled=on",END_MARKERS_IN_JSON=off;
SET optimizer_trace_offset=-30, optimizer_trace_limit=30;
查看字段索引
SHOW INDEX FROM oc_order_online WHERE COLUMN_NAME='order_name';

執(zhí)行order by+limit 查詢語句
select * from `oc_order_online` order by `order_name` limit 20
SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE limit 30


總結(jié)
sort_buffer_size 決定內(nèi)排,外排 max_length_for_sort_data 決定 全字段排序還是,rowid排序 覆蓋索引是一種優(yōu)化手段 Limit可能涉及優(yōu)先隊(duì)列排序
推薦閱讀:
如果mysql磁盤滿了,會(huì)發(fā)生什么?還真被我遇到了!
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
朕已閱 

