執行成本(執行時間)
1. io 成本: 即從磁碟把資料載入到記憶體的成本,預設情況下,讀取資料頁的 io 成本是 1,mysql 是以頁的形式讀取資料的,即當用到某個資料時,並不會只讀取這個資料,而會把這個資料相鄰的資料也一起讀到記憶體中,這就是有名的程式區域性性原理,所以 mysql 每次會讀取一整頁,一頁的成本就是 1。所以 io 的成本主要和頁的大小有關
2. cpu成本:進行一些其他條件的過濾以及排序等,這個成本跟返回的行數有關係
索引使用不到的情況
1. 資料表的資料量比較小,不如全表掃瞄
2. 沒有建立索引
3. 索引使用不規範,比較常見的復合索引的左匹配規則,不等於符號的使用,索引列的隱式轉化(字串型別不加單引號),索引列做計算
4. mysql優化器執行計畫的選擇錯誤,這個選擇的標準是估值,會有一定的誤差性(or操作有時候就會造成這種問題)
不適合索引的情況
1. 唯一性較差的字段
2. 更新頻繁的字段
3. where,order.group後面沒有出現的字段盡量不要建立索引,減少索引的數量
一些索引優化
1. 對於索引欄位較多的表,刪除一些不必要額索引或者使用聯合索引合併一些索引字段
2. 使用覆蓋索引,減少一次回表
3. 使用explain, optimizer trace檢視sql的執行計畫,避免一些因為mysql自身優化器的原因沒有使用到索引,這是可以強制使用索引
4. 索引使用不到的情況的檢查
mysql 索引學習的一些總結
一 使用索引的注意事項 1 索引不會包含有null值的列 資料庫設計時不要讓字段的預設值為null 2 使用短索引 對串列進行索引,如果可能應該指定乙個字首長度,前10個或20個字元內 使用短索引可以大量節省磁碟空間,也有可能會使查詢更快 較小的索引涉及的磁碟i o較少,較短的值比較起來更快 對於較...
mysql索引技巧 MySql 索引的一些技巧
一 多表子從查詢 多表查詢時,子查詢可能會出現觸發不了索引的情況 select from test 1 where id in select id from test publish where id in 38,69 上面語句,test 1和test public都where了主鍵id,常理來說這...
mysql索引的一些概念
在mysql中,建立索引的時候一般可選的索引型別有 普通索引 normal 最基本的索引,沒有任何限制 唯一索引 unique 索引列的值必須唯一,但允許有空值,全文索引 fulltext 效果類似like,但是比like效率高,多用於大文字欄位的檢索。還有乙個主鍵索引,預設建表指定了主鍵就自動建立...