Mysql 性能优化6【重要】 索引优化

时间:2023-03-09 13:26:22
Mysql  性能优化6【重要】 索引优化

b tree索引

myisam 是通过物理位置来查找引用行的

innodb 是通过主键来查找引用行的

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

索引优化策略

Mysql  性能优化6【重要】 索引优化

b-tree索引对数据长度有限制,所以text等比较长的列可以建立前缀索引

btree索引对键值的大小是有限制的

innodb 最大767字节,myisam 1000字节。

大字符串创建索引,不能 很好的提高效率。可以使用前缀索引

Mysql  性能优化6【重要】 索引优化

为什么选择联合索引

如果同时用到几个列作为查询条件,比每一个列建立单独的索引要快。

Mysql  性能优化6【重要】 索引优化

什么是覆盖索引

http://wzmtony.blog.163.com/blog/static/20318015620130173619641/

覆盖索引概念:

  MySQL可以利用索引返回SELECT 列表中的字段。而不必根据索引再次读取数据文件。包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index)。也就是平时所说的不需要回表操作。
判断标准:
 在查询前面使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询。

Mysql  性能优化6【重要】 索引优化

如果只读取索引就可以查找到所需要的数据的话,就会极大的较少数据的访问量。

处理顺序IO要比随机IO要快

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

模拟哈希索引步骤

先创建title_md5的列,

Mysql  性能优化6【重要】 索引优化

然后修改这个字段的值为 MD5(title)

Mysql  性能优化6【重要】 索引优化

可以创建触发器修改此列

查找的时候

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

------------------------------------------------------------------------------------------

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化

Mysql  性能优化6【重要】 索引优化