mysql数据库索引(查看、创建、删除)命令
一、查看索引
SHOW INDEX FROM table_name
二、索引的创建
1.PRIMARY KEY(主键索引)
mysql>ALTER TABLE table_name
ADD PRIMARY KEY ( column
)
2.UNIQUE(唯一索引)
mysql>ALTER TABLE table_name
ADD UNIQUE (column
)
3.INDEX(普通索引)
mysql>ALTER TABLE table_name
ADD INDEX index_name
( column
)
4.FULLTEXT(全文索引)
mysql>ALTER TABLE table_name
ADD FULLTEXT ( column
)
5.多列索引
mysql>ALTER TABLE table_name
ADD INDEX index_name
( column1
, column2
, column3
)
三、删除索引
1.使用 ALTER TABLE 语句删除索引
ALTER TABLE table_name
DROP INDEX index_name
;
2.使用 DROP INDEX 语句删除索引
DROP INDEX index_name ON table_name;
四、索引失效的几种情况
1.有or必全有索引;
2.复合索引未用左列字段;
3.like以%开头;
4.需要类型转换;
5.where中索引列有运算;
6.where中索引列使用了函数;
7.如果mysql觉得全表扫描更快时(数据少);
五、索引在以下情况建议不要用
1、数据唯一性差(一个字段的取值只有几种时)的字段不要使用索引
比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。
2、 频繁更新的字段不要使用索引
比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。
3、字段不在where语句出现时不要添加索引,如果where后含IS NULL /IS NOT NULL/ like ‘%输入符%’等条件,不建议使用索引。
只有在where语句出现,mysql才会去使用索引
4、where 子句里对索引列使用不等于(<>),使用索引效果一般
六、索引创建遵循的原则
1、选择唯一性索引
2、为经常需要排序、分组和联合操作的字段建立索引
3.为常作为查询条件的字段建立索引
4、限制索引的数目
5、尽量使用索引值少的索引
6、尽量使用前缀来索引
7、删除不要使用或很少使用的索引
8、最左前缀匹配原则
mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
9、=和in可以乱序
10、尽量使用区分度高的列作为索引
11、索引列不能参与计算,保持列“干净”
12.尽量的扩展索引,不要新建索引。