MySQL作為一個(gè)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),使用索引是極其重要的。加索引能提高查詢(xún)效率,減輕數(shù)據(jù)庫(kù)的壓力。
在MySQL中,常見(jiàn)的索引有普通索引、唯一索引、全文索引和主鍵索引。下面舉例說(shuō)明如何加索引。
# 創(chuàng)建一個(gè)表 CREATE TABLE student( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age TINYINT NOT NULL, address VARCHAR(50), PRIMARY KEY (id) ); # 插入數(shù)據(jù) INSERT INTO student (name, age, address) VALUES ('Tom', 18, 'Beijing'); INSERT INTO student (name, age, address) VALUES ('John', 20, 'Shanghai'); INSERT INTO student (name, age, address) VALUES ('Lucy', 19, 'Beijing'); INSERT INTO student (name, age, address) VALUES ('Lily', 20, 'Guangzhou');
1. 普通索引
普通索引是最基本的索引類(lèi)型。最常見(jiàn)的方式是在需要進(jìn)行查詢(xún)的字段上加上索引。
# 給address字段加上普通索引 CREATE INDEX idx_address ON student(address); # 執(zhí)行查詢(xún)操作 SELECT * FROM student WHERE address='Beijing';
2. 唯一索引
唯一索引保證字段的值是唯一的。在需要保證數(shù)據(jù)唯一性的字段上加上唯一索引。
# 給name字段加上唯一索引 ALTER TABLE student ADD UNIQUE INDEX idx_name ON name; # 執(zhí)行插入操作 INSERT INTO student (name, age, address) VALUES ('Tom', 18, 'Hangzhou'); # 顯示錯(cuò)誤信息,因?yàn)閚ame=Tom的記錄已經(jīng)存在。
3. 全文索引
全文索引用于對(duì)文本進(jìn)行搜索。在對(duì)文本字段進(jìn)行模糊查詢(xún)時(shí),使用全文索引可以提高查詢(xún)效率。
# 給address字段加上全文索引 ALTER TABLE student ADD FULLTEXT INDEX idx_address ON address; # 執(zhí)行查詢(xún)操作 SELECT * FROM student WHERE MATCH(address) AGAINST('Beijing' IN NATURAL LANGUAGE MODE);
4. 主鍵索引
主鍵索引是最常用的索引類(lèi)型,它保證每個(gè)記錄都有唯一的標(biāo)識(shí)符。在創(chuàng)建表時(shí),需要為每個(gè)記錄定義一個(gè)唯一的主鍵。
# 創(chuàng)建表時(shí)已經(jīng)定義了主鍵索引 CREATE TABLE student( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age TINYINT NOT NULL, address VARCHAR(50), PRIMARY KEY (id) );
上述是mysql加索引例子的詳細(xì)介紹,加索引有助于提高查詢(xún)效率,但是如果加索引不當(dāng),也會(huì)帶來(lái)負(fù)面影響。因此在實(shí)際使用中,需要根據(jù)具體情況來(lái)選擇適當(dāng)?shù)乃饕?lèi)型,避免無(wú)謂的索引。