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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Java面試】請說一下Mysql索引的優點和缺點?2022-06-06Java面試MySql索引
- 跳槽必看MySQL索引:B+樹原理揭秘與索引優缺點分析2024-03-01MySql索引
- 資料庫索引的作用和優點缺點2015-04-23資料庫索引
- mysql和Oracle的特點,優缺點2017-05-27MySqlOracle
- MySQL MHA工具的優缺點歸納2018-07-12MySql
- MySQL MHA工具的優缺點介紹2016-10-06MySql
- MySQL MERGE表的優缺點介紹2017-03-16MySql
- Docker的優缺點2020-09-30Docker
- 【實驗】【索引壓縮】索引壓縮演示及優缺點總結2009-08-19索引
- MySQL GTID複製的優缺點介紹2017-01-09MySql
- MySQL的binlog的格式及優缺點介紹2017-01-09MySql
- RabbitMQ優缺點2022-05-30MQ
- MySQL分割槽表的分割槽原理和優缺點2017-04-19MySql
- 繼承的優缺點2024-08-19繼承
- 節點快取的優缺點2018-12-13快取
- MyBatis的優缺點以及特點2020-11-05MyBatis
- 繼承的優點和缺點2024-08-01繼承
- Jtti:mysql主從同步的優點和缺點是什麼2024-01-23JttiMySql主從同步
- MySQL垂直拆分和水平拆分的優缺點和共同點總結2018-06-12MySql
- MySQL 8 大叢集架構的優缺點總結2019-03-14MySql架構
- MySQL觸發器的使用和優缺點介紹ZGMH2022-03-01MySql觸發器
- MySQL 資料庫自增主鍵生成的優缺點2024-05-04MySql資料庫
- kafka的優缺點都有那些2022-01-07Kafka
- 關於 Cookie的優缺點2018-07-25Cookie
- Serverless架構的優缺點2016-06-21Server架構
- 使用css框架的優缺點2016-04-16CSS框架
- 淺談Ajax的優缺點2016-02-24
- MySQL InnoDB獨立表空間模式的優點和缺點介紹2017-04-11MySql模式
- HTTPS 優點與缺點2019-03-24HTTP
- 各版本 MySQL 並行複製的實現及優缺點2017-03-07MySql並行
- 線性表順序儲存優缺點,線性連結串列的優缺點2012-07-28
- 代理伺服器的優缺點2021-09-11伺服器
- 02 SVN 與 Git 的優缺點2021-06-29Git
- HTTP和RPC的優缺點2018-08-04HTTPRPC
- 單頁應用的優缺點2022-11-22
- 資料中心代理的優缺點2022-06-23
- 雲伺服器的優缺點2022-06-13伺服器
- 物聯網路卡的優缺點2021-12-01