mysql索引优化技巧

不管是面试,还是工作中,我们都要带着理论去实践,这样做出来的项目才更健壮

先说说索引的类型:

普通索引 index

唯一索引 unique

主键索引 primary key

全文索引(myisam独有) fulltext

索引的常见模式:

哈希表

有序列表

二叉树

Btree(innoDB的B+tree)

索引优化记录:

首先我们要知道,索引的创建是需要物理空间的,一般都在mysql的data目录下,每一个数据库都有相应的文件,比如我下面的文件:

 分别是表数据,表索引等数据文件

MYI是索引文件,当你创建表索引的时候,就会将算法实实在在的写入到这个文件中,可以理解为写了一个目录在里面

组合索引优化

利用组合索引进行查询有一个技巧

多列索引的情况下,必需要使用到最左边的列字段,否则是不会使用到索引的

还有一种情况是如果查询条件中有索引字段,还是依然可以使用到索引的,这时候不分左右顺序

模糊查询

当使用一个索引字段进行模糊查询时,需要注意,如果在字段前使用%号,则这个字段是用不到索引的,在后面加%是可以的。

如果一定要在字段前面检索内容,则只能考虑使用全文索引了

or用法索引相关

or用法在使用索引字段的时候,只要需要了or关键字查询的字段都要建立索引才能使用到,否则不会使用到索引

所以,在开发过程中,尽量避免使用or关键字

tips:

关于如果要查询的条件字段中,列是字符串的话,一定要用单引号,否则不会使用索引 ,这是Mysql规定的

#中间说一个关于查询索引 使用率的方法
show status like 'handler_read%';

+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| Handler_read_first       | 0        |
| Handler_read_key         | 4        |
| Handler_read_last        | 0        |
| Handler_read_next        | 0        |
| Handler_read_prev        | 0        |
| Handler_read_rnd         | 0        |
| Handler_read_rnd_deleted | 0        |
| Handler_read_rnd_next    | 16000044 |
+--------------------------+----------+

handler_read_key 越大越好 handler_read_rnd_next 越小越好

group by分组查询优化

在使用分组查询的时候,Mysql默认自动排序,如果你在查询时没有特定的排序要求,就不需要这样的开销了

可以使用下面的语句来消除默认排序

select * from 表名 group by 字段名 order by null;

explain 之后会发现extra这一项没有了using filesort 文件排序这一列

多表查询

当有两个表需要联表查询时,你可能第一想法是如下

select t1.name from 表1 as t1 , 表2 as t2 where t1.id = t2.id;

最好是不要像上面那样写,应该用join如下

select t1.name from 表1 as t1 inner join 表2 as t2 on t1.id = t2.id;
select t1.name from 表1 as t1 join 表2 as t2 on t1.id = t2.id;
select t1.name from 表1 as t1 left join 表2 as t2 on t1.id = t2.id;

都是可以的,就看你前面查询的字段是在左表还是右表了

关于存储引擎

什么时候该用什么引擎,首先得知道有什么引擎是不是

常见的两种引擎:

myisam

innodb

一、当这个表被设计为不需要事务处理,查询与插入数据为主的,选择myisam

二、当涉及到财务类的,钱,财产的都需要用到事务的,就必需使用innodb

区别:

 如果面试,不需要全部说出来,说几下几点就行了:

1、事务,innodb支持

2、添加速度myisam更快

3、全文索引myisam支持

4、锁机制,myisam表锁,innodb行锁

5、外键,innodb支持

有这五点,就够了。

发布了45 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36431166/article/details/101755742