MySQL索引的優缺點
優點:
查詢起來就是快,因為MySQL的索引底層用的是B+樹儲存的,這種儲存方式查詢起來就是快.
通過唯一索引,可以保障資料庫表中每一行資料的唯一性
在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間
缺點:
索引需要佔物理空間,除了資料表佔資料空間之外,每一個索引還要佔一定的物理空間。如果要建立聚簇索引,那麼需要的空間就會更大。
對於需要寫入資料的操作,比如DELETE、UPDATE以及INSERT操作,索引會降低它們的速度。這是因為MySQL不僅要把改動資料寫入資料檔案,而且它還要把這些改動寫入索引檔案。所以為每一列都建立索引非常不明智
欄位適合建立索引場景:
經常需要搜尋的列,加上索引,速度提升,select a
在主鍵的列上面,底層會自動建立主鍵索引,強制該主鍵底層排列順序
在經常用在連線的列,加上索引能夠加快查詢速度
在經常範圍查詢的列加上索引,因為索引底層用的是B+樹儲存,查詢起來會非常快.
對於經常需要排序的列上面加索引,索引已經排好序了
where語句後面的列加上索引,因為索引排好序了,查詢非常快
但是這裡要注意的是,假如select * from emp where empno>10 and deptid>10
這個如果建立索引的話,只是empno建立索引或者deptid建立索引,都會造成索引失效,只有兩個都建立了索引,才能夠生效,其實很好理解,就好比兩個人綁腿跑步,只有都快,才能快,有一個慢,那就跑不起來.
欄位不適合建立索引場景:
平時查詢很少用到的列,或者參考得列,這些列很少用到,因為索引的建立和維護需要時間和空間,會影響到插入效率,
比如員工性別列,不適合新增索引,索引底層是B+樹,這個並不能起到提升查詢速度效果,差別不大
修改場景>查詢場景的列,不適合建立索引,
對於那些定義為text, image和bit資料型別的列不應該增加索引。這是因為,這些列的資料量要麼相當大,要麼取值很少(bit只有0,1,這個不就和性別類似嗎,舉一反三)
MySQL的索引種類
主鍵索引(PRIMARY_KEY)
即MySQL建立主鍵預設是索引,所以查詢索引欄位很快,不允許有空值。
alter table table_name add primary key('column_name')
唯一索引(UNIQUE /UNIQUE KEY)
即唯一約束,主鍵預設就是預設唯一的
alter table table_name add unique('column_name')
全文索引(FULLTEXT)
網上說只支援MyISAM引擎,但是實際上INNODB和MyISAM引擎都支援,型別為CHAR、VARCHAR ,TEXT ,它的出現是為了解決WHERE name LIKE “%word%"這類針對文字的模糊查詢效率較低的問題。
alter table table_name add fulltext (column )
普通索引(INDEX)
建立一個普普通通的索引
alter table table_name add index index_name ( column_name )
聯合索引,多列索引(index)
給多個列建立索引,使用組合索引時遵循最左字首集合。
alter table table_name add index index_name ( column_name, column_name2)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989885/viewspace-2743804/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跳槽必看MySQL索引:B+樹原理揭秘與索引優缺點分析2024-03-01MySql索引
- 【Java面試】請說一下Mysql索引的優點和缺點?2022-06-06Java面試MySql索引
- MySQL MHA工具的優缺點歸納2018-07-12MySql
- Docker的優缺點2020-09-30Docker
- Jtti:mysql主從同步的優點和缺點是什麼2024-01-23JttiMySql主從同步
- 內聯的優缺點2020-04-06
- 繼承的優缺點2024-08-19繼承
- MySQL垂直拆分和水平拆分的優缺點和共同點總結2018-06-12MySql
- Hive 優缺點2018-08-21Hive
- MapReduce優缺點2020-11-16
- RabbitMQ優缺點2022-05-30MQ
- 節點快取的優缺點2018-12-13快取
- MyBatis的優缺點以及特點2020-11-05MyBatis
- 繼承的優點和缺點2024-08-01繼承
- MySQL 資料庫自增主鍵生成的優缺點2024-05-04MySql資料庫
- MySQL 8 大叢集架構的優缺點總結2019-03-14MySql架構
- MySQL觸發器的使用和優缺點介紹ZGMH2022-03-01MySql觸發器
- HTTPS 優點與缺點2019-03-24HTTP
- Mysql索引優化之索引的分類2019-07-04MySql索引優化
- 關於 Cookie的優缺點2018-07-25Cookie
- HTTP和RPC的優缺點2018-08-04HTTPRPC
- 閉包的概念?優缺點?2020-10-18
- Base64 的優缺點2020-08-27
- kafka的優缺點都有那些2022-01-07Kafka
- SAP的概念及優缺點2022-12-02
- 6.iframe的優缺點2020-12-30
- PyLint 的優點、缺點和危險2022-10-16
- MySQL索引優化2021-01-05MySql索引優化
- mysql優化索引2020-12-23MySql優化索引
- MySQL有哪些儲存引擎,各自的優缺點,應用場景2018-09-27MySql儲存引擎
- mysql索引的使用和優化2018-10-25MySql索引優化
- MySQL的索引優化分析(一)2021-01-16MySql索引優化
- MySQL的索引優化分析(二)2021-01-17MySql索引優化
- 串列埠、IIC、SPI的優缺點2024-07-17串列埠
- 雲伺服器的優缺點2022-06-13伺服器
- 物聯網路卡的優缺點2021-12-01
- 代理伺服器的優缺點2021-09-11伺服器
- 單頁應用的優缺點2022-11-22