1. 程式人生 > >mysql選錯娛樂平臺源碼搭建索引的原因與處理

mysql選錯娛樂平臺源碼搭建索引的原因與處理

show 不同的 exp 基數 但是 什麽 頁面 lai 重新

mysql選錯娛樂平臺源碼搭建《企娥21717 93408》索引的原因與處理
1執行計劃預估行數錯誤
2order by和主鍵類型不同導致

索引基數
一個索引上不同的值越多,這個索引的區分度就越好。而一個索引上不同的值的個數,我們稱之為“基數”(cardinality)。也就是說,這個基數越大,索引的區分度越好。
我們可以使用 show index方法,看到一個索引的基數。
MySQL 是怎樣得到索引的基數的呢? 這裏,我給你簡單介紹一下 MySQL 采樣統計的方法。
為什麽要采樣統計呢?因為把整張表取出來一行行統計,雖然可以得到精確的結果,但是代價太高了,所以只能選擇“采樣統計”。
采樣統計的時候,InnoDB 默認會選擇 N 個數據頁,統計這些頁面上的不同值,得到一個平均值,然後乘以這個索引的頁面數,就得到了這個索引的基數。
而數據表是會持續更新的,索引統計信息也不會固定不變。所以,當變更的數據行數超過 1/M 的時候,會自動觸發重新做一次索引統計

掃描行數
根據基數來估算每個索引對應的需要掃描行數
explain sql;
對應的rows是mysql預估的掃描條數
analyze table t;重新統計索引的行數

為什麽有時會得到錯誤的掃描行數?

mysql選錯娛樂平臺源碼搭建索引的原因與處理