建议一张表建立索引不超过6个
一、普通索引
最基本索引,无任何限制,MyIASM中默认的b树索引。
1. 直接创建
CREATE INDEX [index_name] ON [table_name](column(length))
注:length只取前几位放索引中,建立短索引,提高效率,节省空间。
2. 修改表结构的方式添加
ALTER TABLE [table_name] ADD INDEX [index_name] ([column])
3. 建表时直接指定索引
CREATE INDEX table_name (id int not null auto_increament, title varchar(30), PRIMARY KEY(id), INDEX index_name(title))
4. 查询索引
show index from [table_name]
5. 删除索引
DROP INDEX index_name ON table_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
二、唯一索引
与普通索引类似,不同是:索引值必修唯一,但允许有null,如果是组合索引,则列值组合必须唯。
创建于普通索引类似,只不过写为UNIQUE INDEX。
三、全文索引
MySQL从3开始支持全文索引和全文检索,FULLTEXT索引仅可用于MyISAM表,他们可以从CHAR、VARCHAR、TEXT列中创建全文索引。
对于较大的数据库,全文索引比普通索引速度更快。大容量的数据表,生成全文索引异常耗时耗空间。
CREATE FULLTEXT INDEX [index_name] ON [table_name](column(length))
ALTER TABLE [table_name] ADD FULLTEXT [index_name] ([column])
CREATE INDEX table_name (id int not null auto_increament, title varchar(30), PRIMARY KEY(id), FULLTEXT index_name(title))
四、组合索引
创建语句:
- ALTER TABLE article ADD INDEX index_title_time(title(50),time(109))。
- CREATE INDEX index_name ON table_name(column_list)
根据‘最左前缀’相当于创建了下面两组组合索引:
-title,time
-title - 使用到上面的索引语句
select * from article where title='测试' and time=123456789
select * from article where title='测试' - 没有使用到上面的索引语句
select * from article where time =1234567