b tree索引
myisam 是通过物理位置来查找引用行的
innodb 是通过主键来查找引用行的
索引优化策略
b-tree索引对数据长度有限制,所以text等比较长的列可以建立前缀索引
btree索引对键值的大小是有限制的
innodb 最大767字节,myisam 1000字节。
大字符串创建索引,不能 很好的提高效率。可以使用前缀索引
为什么选择联合索引
如果同时用到几个列作为查询条件,比每一个列建立单独的索引要快。
什么是覆盖索引
http://wzmtony.blog.163.com/blog/static/20318015620130173619641/
覆盖索引概念:
MySQL可以利用索引返回SELECT 列表中的字段。而不必根据索引再次读取数据文件。包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index)。也就是平时所说的不需要回表操作。
判断标准:
在查询前面使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询。
如果只读取索引就可以查找到所需要的数据的话,就会极大的较少数据的访问量。
处理顺序IO要比随机IO要快
模拟哈希索引步骤
先创建title_md5的列,
然后修改这个字段的值为 MD5(title)
可以创建触发器修改此列
查找的时候
------------------------------------------------------------------------------------------