Mysql索引以及使用索引注意事项

直接创建索引

CREATE INDEX index_name ON table(column(length))

修改表结构的方式添加索引

ALTER TABLE table_name ADD INDEX index_name ON (column(length))

创建表的时候同时创建索引

CREATE TABLE table (
id int(11) NOT NULL AUTO_INCREMENT ,
title char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
content text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
time int(10) NULL DEFAULT NULL ,
PRIMARY KEY (id),
INDEX index_name (title(length))
)

删除索引

DROP INDEX index_name ON table

索引使用和注意事项

避免索引失效

1). 全值匹配,对索引中所有列都指定具体值。改情况下,索引生效,执行效率高。

2).最左前缀法则 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。

3).范围查询右边的列,不能使用索引。

4).不要在索引列上进行运算操作,引将失效。

6).尽量使用覆盖索引,避免select * 尽量使用覆盖索引(只访问索弓|的查询(引列完全包含查询列) ) , 减少select*。

查询列超过索引列也会降低效率

7).用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。
示例, name字段是索引列,而createtime不是索引列,中间是or进行连接是不走索引的:

8).以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,引失效。

9).如果MySQL评估使用索引比全表更慢。则不使用索引。

10).is NULL,is NOT NULL有时索引失效。

11). in走索引,not in索引失效。

12).单列索引和复合索引。尽量使用复合索引,而少使用单列索引。

查看索引使用情况
show status like 'Handler_ read%' ;
当前会话
show global status like 'Handler. read%' ;
全局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值