主题
• B+树索引
• 简单查询优化
– OLTP
• 复杂查询优化
– OLAP
B+树索引
• 常用的索引
– B+ Tree Index
– T Tree Index
– Hash Index
• 什么是索引?
–提高查询速度???
– It depends
–减少IO次数
B+树索引
• 聚集索引(Clustered Index)
– 叶子节点存放整行记录
• 辅助索引(Secondary Index)
– 叶子节点存放row identifier
• InnoDB:primary key
– 书签查找(bookmark lookup)
»查找代价大
• MyISAM:物理位置(偏移量)
– 更新代价大
• B+树的高度=> IO次数=>随机IO
– 3~4层
B+树索引
• 辅助索引的优势
–树的高度较小=>需要的IO次数少
–树的大小较小=>scan需要扫描的页较少
–优化器倾向于使用辅助索引
• 辅助索引的劣势
–查找完整记录还需查询
• InnoDB:查询聚集索引
• MyISAM:直接查找MYD物理位置
B+树索引-插入顺序问题
• 聚集索引插入
–主键是自增长的
–插入是顺序的
–每页中的填充率高(15/16)
–顺序扫描(Scan)可以达到磁盘顺序读的速率
–一般不推荐使用UUID
• 插入非顺序