MySQL进阶(六)索引

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/83867846
索引的优点

(1)提供数据检索效率

(2) 提高聚合函数效率

(3)提供排序效率

(4)使用覆盖索引可以避免回表


索引创建的四个不要

(1)选择性低的字段一般不要创建索引(例如:性别sex、状态status)
说明: 但是有特殊情况,比如如果表中有个字段叫做 status,只有两个值 0 ,1 ,区分度只有2够低了吧。但是如果100W条数据中,0的值只有100条,并且0又是常用的查询呢。显然是要在status上创建索引了。

(2)很少查询的列不要创建索引(项目初期要确定好)

(3)大数据类型字段不要创建索引

(4)尽量避免不要使用NULL,应该指定列为NOT NULL(在MySQl中,含有空值的列很难进行查询优化,它们会使得索引、索引的统计信息及比较运算更加复杂。可以使用空字符串代替空值)


使用不到索引的情况

(1)通过索引扫描的行记录数超过全表的30%,优化器就不会走索引,而变成全表扫描。

(2)联合索引中,第一个查询条件不是最左索引列

(3)联合索引中,第一个索引列使用范围查询,只能使用到部分索引,有ICP出现(范围查询是指<、=、<=、between and)。

(4)联合索引中,第一个查询条件不是最左前缀列

(5)模糊查询条件列最左以通配符 % 开始(可以考虑放到子查询里面)

(6)两个单列索引,一个用于检索,一个用于排序。这种情况下只能使用到一个索引。因为查询语句中最多只能使用一个索引,考虑建立联合索引

(7)查询字段上面有索引,但是使用了函数运算


实用的MySQL命令

(1)update table_name set:字段名=某值(where):更新表中某行数据
(2)show create table table_name\G:查看建表语句
(3)desc table_name:查看表结构
(4)show table status:获取表基础信息
(5)show index from table_name :查看当前表下索引的情况
(6)show full processlist:查看数据库当前连接的情况


猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/83867846