DesignDB-6-1_索引及安装演示数据库

索引的优缺点

优点

  1. 可大大减少存储引擎的扫描数据量
  2. 可用帮助我们进行排序,避免使用临时表
  3. 可用让随机I/O变成顺序I/O

缺陷

  1. 会增加写操作的成本
  2. 太多索引会增加查询优化器的选择时间

B-tree索引

介绍

  1. 以B+树的结构存储数据
  2. 可加快数据的查询速度
  3. 比较适合进行范围查找
适用情况
  • 全值匹配查询
    • order_sn=12342423420970
  • 匹配最左前缀的查询
  • 匹配列前缀的查询
    • order_sn like '9865%'
  • 匹配范围值的查询
    • order_sn > '234238797' and order_sn < '45287987987912312'
  • 精确匹配左前列并范围匹配另外一列
  • 只访问索引的查询
使用限制
  1. 如果不是按照左前列进行查找,则无法使用索引
  2. 使用Btree索引时不能跳过索引的列
  3. Not in 和<> 不等于这种操作无法使用索引
  4. 如果查询中有某个列的范围查询,则其右边所有列都无法使用索引

Hash索引

特点

  1. 基于Hash表实现,只有查询条件精确才能使用,模糊查询和范围查询无法使用
  2. 对于Hash索引的所有列,存储引擎都为每个行计算一个Hash码,Hash索引存储的就是这个码

限制

  • Hash索引会引起2次查找
  • Hash索引无法进行排序操作
  • 不能进行部分查找或范围查找
  • 计算出来的hash码可能存在Hash冲突

安装演示数据库

步骤

1
2
3
4
5
$ wget http://downloads.mysql.com/docs/sakila-db.tar.gz
$ tar -zxvf sakila-db.tar.gz
$ cd sakila-db
$ mysql -uroot -p < sakila-schema.sql
$ mysql -uroot -p < sakila-data.sql