在优化慢接口的时候,遇到一个问题,在通过索引查询数据库表的时候根据时间区间去扫描表的时候,开始时间时表扫描的其实位置吗?或者说根据时间日期B+索引能一次性定位到具体的时间位置吗?是的不能。那为什么不能呢? 接下来我们来看看b+树索引的底层数据结构。
B+树索引
全文索引
哈希索引
SHOW INDEX FROM tablename
列名 | 含义 |
---|---|
Table | 索引所在的表名 |
Non_unique | 非唯一索引 |
key_name | 索引的名字 |
Seq_in_index | 索引中该列的位置 |
Column_name | 索引该列的名称 |
Collation | 列以什么方式存储在索引中。可以是A或BULL。B+树索引总是A,级排序 |
Cardinality | 非常关键的值,表示所以中唯一的值的的估计值。值越大越能说明这个缩阴的区分度很高 |
SUb_part | 是否列的部分被索引。如果索引整个列那这个字段应为null |
Packed | 关键字如何被压缩,如果没有压缩,就为null |
Null | 是否索引的列含有NULL值,相对来说含有NULL值索引的性能能欠缺一点点 |
Index_type | 索引的类型,innoDB只支持B+树索引是Btree |
Comment | 注释 |
ANALYZE TABLE tablename
进行重新矫正参数
《innoDB技术内幕》 《大话数据结构》