1. 程式人生 > 其它 >Mysql_索引_劉益長

Mysql_索引_劉益長

1.索引介紹

1.1、什麼是索引?

一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現效能問題,在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,因此對查詢語句的優化顯然是重中之重。說起加速查詢,就不得不提到索引了。

1.2、為什麼要有索引呢?

索引在MySQL中也叫做“鍵”,是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能 非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。 索引優化應該是對查詢效能優化最有效的手段了。

索引能夠輕易將查詢效能提高好幾個數量級。 索引相當於字典的音序表,如果要查某個字,如果不使用音序表,則需要從幾百頁中逐頁去查。

2.普通索引:

2.1、建立索引:

# 1.1、建立索引:單獨建立索引
CREATE INDEX index_name ON emp(emp_name);

2.2、修改時新增索引:

# 1.2、建立索引:修改表結構時建立索引
ALTER TABLE emp ADD INDEX index_salary

2.3、建立表時指定索引:

# 1.3、建立索引:建立表時的時候建立索引
CREATE TABLE IF NOT EXISTS article
(
    id INT NOT NULL AUTO_INCREMENT,
    title VARCHAR(30),
    content 
VARCHAR(50), dt DATE, PRIMARY KEY(id), INDEX index_title (title) );

2.4、刪除索引

# 刪除索引
DROP INDEX index_name ON emp;

 

3.唯一索引

3.1、建立唯一索引:

# 3.1、單獨建立唯一索引:列的值必須唯一
CREATE UNIQUE INDEX index_name ON emp(emp_name);

3.2、修改時新增唯一索引:

# 3.2、修改表時建立唯一索引
ALTER TABLE emp ADD UNIQUE INDEX index_name (emp_name);

3.3、建立表時指定唯一索引:

# 3.3、建立表時建立唯一索引
CREATE TABLE IF NOT EXISTS emp2
(
    id INT NOT NULL AUTO_INCREMENT,
    title VARCHAR(30),
    content VARCHAR(50),
    dt DATE,
    PRIMARY KEY(id),
    UNIQUE INDEX index_title (title)
);

3.4、刪除唯一索引

# 刪除索引
DROP INDEX index_name ON emp;

4.組合索引

4.1、建立組合索引:

# 4.1、組合索引
CREATE INDEX index_ct ON article(content,dt);

4.2、修改時新增組合索引:

# 4.2、修改表時建立唯一索引
ALTER TABLE emp2 ADD INDEX index_tc (title,content);

4.3、建立表時指定組合索引:

# 4.3、建立表時建立唯一索引
CREATE TABLE IF NOT EXISTS emp3
(
    id INT NOT NULL AUTO_INCREMENT,
    title VARCHAR(30),
    content VARCHAR(50),
    dt DATE,
    PRIMARY KEY(id),
    INDEX index_tc (title,content)
);

4.4、刪除唯組合索引

# 刪除索引
DROP INDEX index_name ON emp;