索引的优缺点
优点
- 可大大减少存储引擎的扫描数据量
- 可用帮助我们进行排序,避免使用临时表
- 可用让随机I/O变成顺序I/O
缺陷
- 会增加写操作的成本
- 太多索引会增加查询优化器的选择时间
B-tree索引
介绍
- 以B+树的结构存储数据
- 可加快数据的查询速度
- 比较适合进行范围查找
适用情况
- 全值匹配查询
order_sn=12342423420970
- 匹配最左前缀的查询
- 匹配列前缀的查询
order_sn like '9865%'
- 匹配范围值的查询
order_sn > '234238797' and order_sn < '45287987987912312'
- 精确匹配左前列并范围匹配另外一列
- 只访问索引的查询
使用限制
- 如果不是按照左前列进行查找,则无法使用索引
- 使用Btree索引时不能跳过索引的列
- Not in 和<> 不等于这种操作无法使用索引
- 如果查询中有某个列的范围查询,则其右边所有列都无法使用索引
Hash索引
特点
- 基于Hash表实现,只有查询条件精确才能使用,模糊查询和范围查询无法使用
- 对于Hash索引的所有列,存储引擎都为每个行计算一个Hash码,Hash索引存储的就是这个码
限制
- Hash索引会引起2次查找
- Hash索引无法进行排序操作
- 不能进行部分查找或范围查找
- 计算出来的hash码可能存在Hash冲突
安装演示数据库
步骤
1 | $ wget http://downloads.mysql.com/docs/sakila-db.tar.gz |