标签:中间 search family soft 引擎 hash logs 应该 font
一定程度上说,mysql只有b-tree索引。他没有bitmap索引。还有一个叫hash索引的,只在Memory存储引擎中才有。
b-tree索引跟oracle中的大同小异。
mysql中关于b-tree的限制:
只有做全值拼配或者根据左前缀匹配。我猜测是因为mysql没有基于cost的优化器,它没有对index full scan的操作。因为无法衡量这种full scan是否划得来。所以只能对前缀进行匹配,没有后缀或者中间匹配这种逻辑。
如果是多列索引,顺序很重要,如果没有从索引的第一列开始查询,那么将不会使用索引。
比如索引建立在A,B,C列上。
始终将索引的列放在查询的一边,如A + 1 = 2,这种情况不会使用索引,应该是写A = 1。(可能是因为mysql处理的时候,A + 1 是作为隐藏的函数来处理的)。A如果作为函数的参数,也无法使用索引。
前缀索引:
前缀索引用在大字段上或者长度比较尝的字符串上,使用字符串的前缀作为索引。传入一个参数,代表截取的长度。
语法:
结果:
使用了索引。
前缀索引的缺陷:因为只存储了前缀,所以无法作为数据来操作,如order by和group by的部分,无法使用这个索引来优化。
标签:中间 search family soft 引擎 hash logs 应该 font
原文地址:http://www.cnblogs.com/xiaolang8762400/p/6963399.html