SQL索引的概念

SQL索引的概念MySQL 索引的概念 MySQL 官方对索引的定义为 索引 Index 是帮助 MySQL 高效获取数据的数据结构 通俗来讲索引就好比书本的目录 加快数据库的查询速度 举个简单的例子 见下图 注意 此例子的中索引结构与数据库中的索引结构差距很大 user 表有 3 个字段 id name age 存储 8 条记录 当我们查找 age 为 20 的记录时 sql 语句 select fromuser

MySQL索引的概念

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

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

SQL索引的概念

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

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查看索引

SQL索引的概念

可以根据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 应用层次

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

–  多列:复合索引

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176329.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:12
下一篇 2026年3月26日 下午10:12


相关推荐

  • cmd输入java有效,输入javac无效解决方案

    cmd输入java有效,输入javac无效解决方案笔记本的系统是win1064bit的系统,按照网上的指导安装了jdk和jre运行cmd的时候,输入java会有输出,但是输入javac的时候就报javac不是内部或外部命令的错误。最终的解决办法是:cmd中输入:setpath="%JAVA_HOME%\bin"…

    2022年5月8日
    66
  • 常见python面试题

    常见python面试题转自 https github com taizilongxu interview pythonPython 语言特性 1Python 的函数参数传递 2Python 中的元类 metaclass 3 staticmethod 和 classmethod4 类变量和实例变量 5Python 自省 6 字典推导式 7Python 中单下划线和双下划线 8 字符串格式化 和 format9

    2026年3月16日
    2
  • 设计模式学习之策略模式

    设计模式学习之策略模式写代码时总会出很多的 if else 或者 case 如果在一个条件语句中又包含了多个条件语句就会使得代码变得臃肿 维护的成本也会加大 而策略模式就能较好的解决这个问题 本篇博客就带你详细了解策略模式 策略模式的定义和使用场景定义 策略模式定义了一系列的算法 并将每一个算法封装起来 而且使他们可以相互替换 让算法独立于使用它的客户而独立变化 分析下定义 策略模式定义和封装了一系列的算法 它们是可以相互替

    2026年3月19日
    2
  • docker部署influx_docker容器部署

    docker部署influx_docker容器部署使用docker部署influxdbdocker-compose.yamlversion:”3″services:influxdb:image:influxdb:latestcontainer_name:influxdbenvironment:-INFLUXDB_DB=db0-INFLUXDB_ADMIN_ENABLED=true-INFLUXDB_ADMIN_USER=admin-INF.

    2022年10月19日
    6
  • Ubuntu18.04 Pycharm卸载安装

    Ubuntu18.04 Pycharm卸载安装前言 Pycharm 版本有些老旧 需要卸载并重新下载最新版本进行安装 2021 年 3 月测试可用注 版本不同名称不同这里旧版本以 Pycharm2018 1 为例 1 删除 Pycharm 安装文件夹 cd ls asudorm r Pycharm 2 删除 Pycharm 配置文件夹 cd ls asudorm

    2026年3月27日
    2
  • Java 接口

    Java 接口

    2021年9月10日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号