三、 索引
4. 索引的代價
前面幾講介紹了索引在提高性能方面的威力以及如何使用索引,但是索引也是有開銷的1) 佔用磁盤空間
如前面所述,索引是有開銷的,表現在添加索引後.ibd文件(innodb引擎)或者.myi文件(myisam引擎)會變大。
2) 導致dml操作速度變慢
添加索引後之所以會快,是因爲表依據索引對數據按某種算法(二叉樹等)進行排序,所以刪除、增加、插入後二叉樹要重新排序,導致執行效率降低。
此時要看自己的數據庫是dml語句執行的多還是dql語句執行的多
使用以下語句可以查詢
查詢一共執行了多少次select
- show status like ‘com_select’
查詢一共執行了多少次insert
- show status like ‘com_insert’
以此類推
一般來說,dql語句操作比dml語句要多得多!接近9:1
既然索引有利有弊,那麼怎樣人爲地控制索引的使用呢?
強制不使用索引
- select xxx from table ignore index(index_xxx)
強制使用索引
- select * from table force index(index_xxx)