索引存在的意义:
一般来说,加了索引之后,可以提高访问数据库表的速度,查询会更快。
更有利于select语句提高性能
不要过度索引。
并不是只要加了索引就会提升性能,有可能起反作用。
什么样的字段适合创建索引,一般来说:
主键
经常需要排序的列
经常使用在where子句中的列
什么样的字段不适合创建索引,一般来说:
很少数据值的列(比如性别,只有2个值,非男即女)
字段类型text、image、bit (这些都是大字段,数据量比较大)
当修改远远大于搜索的时候(update操作多,select操作少)
几种不同的索引:
主键索引
规则:索引列不能包含重复值,且不能为空
alter table 表1 add primary key(列1[,列2])
普通索引
没有规则
alter table 表1 add index 索引名(列1[, 列2])
create index 索引名 on 表1(列1[, 列2])
举例:
alter table person_info add index myindex(salary)
alter TABLE person_info add index hisindex(name, salary)
create index yourindex on person_info(salary)
create index herindex on person_info(salary, name)
唯一索引
规则:索引列的值必须唯一,但可以为空
alter table 表1 add unique index 索引名(列1[, 列2])
create unique index 索引名 on 表1(列1[, 列2])
查看索引
show index from 表1
desc 表1 查看表结构也能看出来
举例:
show index from person_info
desc 表1
索引的删除
drop index 索引名 on 表1
drop index yourindex on person_info
单索引和组合索引
单索引:
alter table person_info add index myindex(salary)
alter table person_info add index myindex(name)
组合索引
alter TABLE person_info add index hisindex(name, salary)
备注:
组合索引的效率要比单索引高,但也跟数据量有关,数据多的话对比才明显