首先:先假設有一張表,表的數據有10W條數據,其中有一條數據是nickname='has',如果要拿這條數據的話需要寫的sql是 SELECT * FROM award WHERE nickname = 'has'
一般情況下,在沒有建立索引的時候,mysql需要掃描全表及掃描10W條數據找這條數據,如果我在nickname上建立索引,那麼mysql只需要掃描一行數據及爲我們找到這條nickname='has'的數據,是不是感覺性能提升了好多.
mysql的索引分爲單列索引(主鍵索引,唯索引,普通索引)和組合索引.
單列索引:一個索引只包含一個列,一個表可以有多個單列索引.
組合索引:一個組合索引包含兩個或兩個以上的列,
本文使用的案例的表:
CREATE TABLE award (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id',
aty_id varchar(100) NOT NULL DEFAULT '' COMMENT '活動場景id',
nickname varchar(12) NOT NULL DEFAULT '' COMMENT '用戶暱稱',
is_awarded tinyint(1) NOT NULL DEFAULT 0 COMMENT '用戶是否領獎',
award_time int(11) NOT NULL DEFAULT 0 COMMENT '領獎時間',
account varchar(12) NOT NULL DEFAULT '' COMMENT '帳號',
password char(32) NOT NULL DEFAULT '' COMMENT '密碼',
message varchar(255) NOT NULL DEFAULT '' COMMENT '獲獎信息',
created_time int(11) NOT NULL DEFAULT 0 COMMENT '創建時間',
updated_time int(11) NOT NULL DEFAULT 0 COMM