mysql在實際執行查詢語句之前會經查詢優化器評估乙個成本最低的方式去執行查詢,成本是怎麼評估的呢?分為兩個部分:
從上可以看出,我們需要兩個資料:
總成本=io成本+cpu成本
通常選擇最低成本的方式執行查詢包括下述步驟:
針對全表掃瞄的成本核算比較簡單,我們需要的兩部分資料可以直接通過檢視表的統計資訊得出:show table status like 『%***%』,列出的資訊中包括記錄條數,不過針對innodb引擎而言不太準確。頁面數量可以計算出來,可以使用data_length即記錄占用的總位元組數除以乙個頁面的大小得出總頁數。不過計算成本的時候會加入一些微調值,這些都不需要關注。
如果查詢條件中有二級索引列,優先計算唯一二級索引,計算每種二級索引的成本,可能會遇到二級索引+回表的形式。諸如索引的成本計算比較複雜,不深入。
完。
5 MySQL基於索引的優化
建表語句如下 mysql create table t id int primary key,k int not null default 0,s varchar 16 not null default index k k engine innodb idks 1001 aa 2002 bb 300...
mysql查詢優化之基於索引的排序
mysql的弱點之一是它的排序。雖然mysql可以在1秒中查詢大約15,000條記錄,但由於mysql在查詢時最多只能使用乙個索引。因此,如果 where條件已經占用了索引,那麼在排序中就不使用索引了,這將大大降低查詢的速度。我們可以看看如下的sql語句 select from sales wher...
mysql的優化 MySQL優化
一 sql語句優化 1 使用limit對查詢結果的記錄進行限定 2 避免select 將需要查詢的字段列出來 3 使用連線 join 來代替子查詢 4 拆分大的delete或insert語句 二 選擇合適的資料型別 1 使用可存下資料的最小的資料型別,整型 date,time char,varcha...