mysql高級(jí)學(xué)習(xí)之索引的優(yōu)劣勢(shì)及規(guī)則使用
一、索引的優(yōu)劣勢(shì)
優(yōu)點(diǎn):可以快速的檢索 、可以加快分組和排序
缺點(diǎn): 占用儲(chǔ)存空間、降低數(shù)據(jù)表的修改操作
二、索引的分類
| 主鍵索引 | 即主索引,根據(jù)主鍵 pk_clolum(length)建立索引,不允許重復(fù),不允許空值 |
|---|---|
| 唯一索引 | 用來建立索引的列的值必須是唯一的,允許空值 |
| 普通索引 | 用表中的普通列構(gòu)建的索引,沒有任何限制 |
| 全文索引 | 用大文本對(duì)象的列構(gòu)建的索引 |
| 全文索引 | 用大文本對(duì)象的列構(gòu)建的索引; |
| 組合索引 | 用多個(gè)列組合構(gòu)建的索引,這多個(gè)列中的值不允許有空值。 |
三、使用索引的規(guī)則
1、適合建立索引的情況
- 主鍵自動(dòng)建立唯一索引;
- 經(jīng)常作為查詢條件在 WHERE 或者 ORDER BY 語(yǔ)句中出現(xiàn)的列要建立索引;
- 作為排序的列要建立索引;
- 查詢中與其他表關(guān)聯(lián)的字段,外鍵關(guān)系建立索引;
- 高并發(fā)條件下傾向組合索引;
- 用于聚合函數(shù)的列可以建立索引,例如使用了 max(column_1)或者count(column_1)時(shí)的 column_1 就需要建立索引。
2、不適合建立索引的情況
- 經(jīng)常增刪改的列不要建立索引;
- 有大量重復(fù)的列不建立索引;
- 表記錄太少不要建立索引。
3、索引失靈的情況
- 在組合索引中不能有列的值為 NULL,如果有,那么這一列對(duì)組合索引就是無效的;
- LIKE 操作中,'%aaa%'不會(huì)使用索引,也就是索引會(huì)失效,但是‘a(chǎn)aa%'可以使用索引;
- 在索引的列上使用表達(dá)式或者函數(shù)會(huì)使索引失效;
- 在查詢條件中使用不等于,包括<符號(hào)、>符號(hào)和!=會(huì)導(dǎo)致索引失效;
- 在查詢條件中使用 IS NULL 或者 IS NOT NULL 會(huì)導(dǎo)致索引失效;
- 字符串不加單引號(hào)會(huì)導(dǎo)致索引失效;
- 在查詢條件中使用 OR 連接多個(gè)條件會(huì)導(dǎo)致索引失效,除非 OR 鏈接的每個(gè)條件都加上索引;
- 如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否則索引失效;
- 盡量不要包括多列排序,如果一定要,最好為這隊(duì)列構(gòu)建組合索引。
四、關(guān)于索引的SQL
1、創(chuàng)建表的時(shí)候添加索引
-- 創(chuàng)建表的時(shí)候添加索引 -- INDEX 關(guān)鍵詞 -- myindex 索引的名稱自己起的 -- (username(16))添加到哪一個(gè)字段上 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX myindex (username(16)) );
2、創(chuàng)建表過后添加索引
-- 添加索引 -- myindex索引的名字(自己定義) -- mytable 表的名字 CREATE INDEX myindex ON mytable(username(16)); 或者 ALTER TABLE mytable ADD INDEX myindex(username);
3 查看索引
-- mytable 表的名字 show index FROM mytable;
4、刪除索引
-- myindex索引的名字(自己定義) -- mytable 表的名字 DROP INDEX myindex ON mytable; 或者 ALTER TABLE mytable DROP INDEX myindex;
總結(jié)
到此這篇關(guān)于mysql高級(jí)學(xué)習(xí)之索引的優(yōu)劣勢(shì)及規(guī)則使用的文章就介紹到這了,更多相關(guān)mysql高級(jí)索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql語(yǔ)法時(shí)采用了雙引號(hào)““的錯(cuò)誤問題
錯(cuò)誤原因:使用雙引號(hào)定義表名和列名導(dǎo)致MySQL報(bào)錯(cuò),應(yīng)使用反引號(hào),修改方案:將雙引號(hào)改為反引號(hào),避免語(yǔ)法沖突,總結(jié):在MySQL中,正確使用反引號(hào)引用標(biāo)識(shí)符,確保SQL語(yǔ)句符合MySQL語(yǔ)法規(guī)則2024-10-10
mysql 1130錯(cuò)誤,無法登錄遠(yuǎn)程服務(wù)的解決
這篇文章主要介紹了mysql 1130錯(cuò)誤,無法登錄遠(yuǎn)程服務(wù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
詳解MySQL中事務(wù)的持久性實(shí)現(xiàn)原理
這篇文章主要介紹了詳解MySQL中事務(wù)的持久性實(shí)現(xiàn)原理,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2021-01-01
解決Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問題
這篇文章主要介紹了Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問題及解決辦法 ,需要的朋友可以參考下2018-10-10
MySQL存儲(chǔ)引擎中MyISAM和InnoDB區(qū)別詳解
存儲(chǔ)引擎說白了就是如何存儲(chǔ)數(shù)據(jù)、如何為存儲(chǔ)的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)等技術(shù)的實(shí)現(xiàn)方法。因?yàn)樵陉P(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)的存儲(chǔ)是以表的形式存儲(chǔ)的,所以存儲(chǔ)引擎也可以稱為表類型(即存儲(chǔ)和操作此表的類型)2016-12-12
允許任意IP訪問mysql數(shù)據(jù)庫(kù)的方法詳解
MYSQL默認(rèn)只能本地連接,即127.0.0.1和localhost,其他主機(jī)IP無法訪問數(shù)據(jù)庫(kù),那么如何允許任意IP訪問mysql數(shù)據(jù)庫(kù),所以本文小編將給大家介紹允許任意IP訪問mysql數(shù)據(jù)庫(kù)的方法,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(七)--查詢
在這個(gè)《與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得》系列里面,我一直都把MYSQL跟SQLSERVER進(jìn)行比較,相互進(jìn)行比較是學(xué)習(xí)一樣?xùn)|西比較好的方法2014-08-08

