MySQL是一款廣泛應(yīng)用于Web應(yīng)用程序開發(fā)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。在處理海量數(shù)據(jù)時(shí),如何優(yōu)化查詢效率是數(shù)據(jù)庫(kù)管理的重點(diǎn)之一。添加索引是性能優(yōu)化的重要手段之一。在MySQL中,對(duì)關(guān)鍵列添加索引可以大大提高查詢速度。本文將介紹如何對(duì)MySQL的3個(gè)列添加索引。
CREATE TABLE students ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, age TINYINT(3) UNSIGNED NOT NULL, PRIMARY KEY (id), INDEX (name), UNIQUE (age) );
上面的代碼創(chuàng)建了一個(gè)students表。其中,id是主鍵,是默認(rèn)創(chuàng)建的索引,name和age是其他兩個(gè)需要進(jìn)行索引的列。
ALTER TABLE students ADD INDEX name_age (name, age);
上面的代碼添加了一個(gè)復(fù)合索引name_age,索引包含了name和age兩個(gè)列,可以優(yōu)化包含這兩個(gè)條件的查詢。
SHOW INDEXES FROM students;
上面的代碼查詢了students表中所有的索引信息。執(zhí)行結(jié)果如下:
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | students | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | | | students | 1 | name | 1 | name | A | 0 | NULL | NULL | | BTREE | | | | students | 1 | age | 1 | age | A | 0 | NULL | NULL | | BTREE | | | | students | 1 | name_age | 1 | name | A | 0 | NULL | NULL | | BTREE | | | | students | 1 | name_age | 2 | age | A | 0 | NULL | NULL | | BTREE | | | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
執(zhí)行結(jié)果顯示students表中一共有5個(gè)索引,其中name_age是剛剛添加的復(fù)合索引。
索引可以提高查詢效率,但是也會(huì)帶來(lái)一定的維護(hù)成本。因此,在添加索引之前需要仔細(xì)思考需要進(jìn)行索引的列,避免不必要的索引。