zoukankan      html  css  js  c++  java
  • MySQL——索引

    MySQL索引的概念

    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,通俗来讲索引就好比书本的目录,加快数据库的查询速度。

    举个简单的例子,见下图:

    注意:此例子的中索引结构与数据库中的索引结构差距很大

    user表有3个字段(id、name、age),存储8条记录,当我们查找age为20的记录时,sql语句 select * from user where age=20;

    1 在没有索引情况下需要依次遍历表里的记录,第6次时找到age=20的记录;

    2 如果我们在age列添加索引,只需3次,就可以找到age=20的记录。

    正如官方所说:索引是一个数据结构;

    通过语句show index from tablename查看索引

    可以根据Index_type看出该索引由BTREE数据结构实现;除了BTREE,还有HASH、FULLTEXT、RTREE;

    索引的作用

    - 提高查询效率

    - 消除数据分组、排序

    - 避免“回表”查询(索引覆盖)

    - 优化聚合查询

    - 用于多表JOIN关联查询

    - 利用唯一性约束,保证数据唯一性

    - InnDB行锁实现

    索引的副作用

    - 增加I/O成本

    - 增加磁盘空间

    - 不合适的索引或索引过多,会降低增删改的效率

    索引的分类

    1 存储结构

    - BTREE:InnoDB & MyISAM

    - HASH:HEAP,NDB,InnoDB AHI

    - Fractal Tree:TokuDB

    - RTREE

    - FULLTEXT

    2 数据的存储方式

    - 聚集索引:聚簇索引的顺序就是数据的物理存储顺序,索引与数据存放在同一个文件中。

    - 非聚集索引:非聚簇索引的顺序与数据的物理存储顺序不同,索引与数据存放在不同的文件。

     3 应用层次

    -  单列:主键索引、唯一索引、普通索引

    -  多列:复合索引

  • 相关阅读:
    java lambda
    ssh配置基础
    信息安全课程笔记1
    字体标记与文字布局
    字符串:格式化
    字符串
    标签详细描述
    HTML中的标签列表
    html(1)
    python列表命令
  • 原文地址:https://www.cnblogs.com/sunjingwu/p/9748132.html
Copyright © 2011-2022 走看看