mysql手册03_索引


索引是帮助MySQL进行高效率数据查询数据结构

索引的优势和劣势:

优势:提高数据检索和排序的效率
劣势:索引占用空间,更新表时,MySQL不仅要更新数据,还要更新索引信息。
BTREE结构:
以5叉BTree树为例,每层节点超出4个时,中间节点将分裂为父节点。
插入数据:C N G A H E K Q M F W L T Z D P R X Y S
插入前4个字母:
ACGN
插入H,G向上分裂:G
AC   HN
插入E K Q,不需分裂:G
ACE     HKNQ
插入M,M向上分裂:G       M
ACE     HK      NQ
插入F W L T,不需分裂:G        M
ACEF     HKL      NQTW
插入Z,T向上分裂:G         M        T
ACEF    HKL       NQ        WZ
插入D,D向上分裂:D    G      M    T
AC   EF    HKL   NQ   WZ
插入P R X Y,不需分裂:D    G      M        T
AC   EF    HKL    NPQR     WXYZ
插入S,Q向上分裂,M向上分裂:MD     G             Q      T
AC   EF     HKL    NP     RS     WXYZBTree相比二叉树,层级结构小,查询效率高!

准备工作:

创建数据库demo01
create database demo01 default charset=utf8mb4;
use demo01;创建city表和country表并插入数据
create table city(
city_id int(11) not null auto_increment,
city_name varchar(50) not null,
country_id int(11) not null,
primary key(city_id)
) engine=innodb default charset=utf8;create table country(
country_id int(11) not null auto_increment,
country_name varchar(100) not null,
primary key(country_id)
) engine=innodb default charset=utf8;insert into city values(1,'西安',1);
insert into city values(2,'NewYork',2);
insert into city values(3,'北京',1);
insert into city values(4,'上海',1);insert into country values(1,'China');
insert into country values(2,'America');
insert into country values(3,'Japan');
insert into country values(4,'UK');

索引的基本语法:

创建普通索引:
create index idx_city_name on city(city_name);查看索引(数据表拥有默认的主键索引):
show index from city\G*************************** 1. row ***************************Table: cityNon_unique: 0Key_name: PRIMARYSeq_in_index: 1Column_name: city_idCollation: ACardinality: 4Sub_part: NULLPacked: NULLNull:Index_type: BTREEComment:
Index_comment:Visible: YESExpression: NULL
*************************** 2. row ***************************Table: cityNon_unique: 1Key_name: idx_city_nameSeq_in_index: 1Column_name: city_nameCollation: ACardinality: 4Sub_part: NULLPacked: NULLNull:Index_type: BTREEComment:
Index_comment:Visible: YESExpression: NULL删除索引:
drop index idx_city_name on city;
创建普通索引:
alter table city add index idx_city_name(city_name);
创建唯一索引:
alter table city add unique idx_city_name(city_name);
创建全文索引:
alter table city add fulltext idx_city_name(city_name);

索引的设计原则:

1. 对查询频次高,数据量大的表建立索引
2. 针对查询条件中的字段建立索引
3. 尽量使用唯一索引,区分度高,索引效率就高
4. 索引不是越多越好
5. 尽量使用短字段索引
6. 最左前缀原则

mysql手册03_索引相关推荐

  1. mysql 批量加索引_mysql优化:按期删数据 + 批量insert + 字符串加索引为何很傻

    嗯,犯了一个很低级的错误,最近暴露出来了.html 背景:mysql 1. 内部平台,接口间断性无返回,查询日志注意到失败时,接口耗时达到4000+(正常状态:100+ms)git 2. 增长日志打点 ...

  2. mysql force index报错_新特性解读 | MySQL 8.0 索引特性4-不可见索引

    MySQL 8.0 实现了索引的隐藏属性.当然这个特性很多商业数据库早就有了,比如ORACLE,在11g中就实现了.我来介绍下这个小特性. 介绍 INVISIBLE INDEX,不可见索引或者叫隐藏索 ...

  3. MySQL高级 —— 高性能索引

    引言 最近一直在抱着<高性能MySQL(第三版)>研究MySQL相关热点问题,诸如索引.查询优化等,这阶段的学习是前一段时间MySQL基础与官方的"阅读理解"的进一步延 ...

  4. 【mysql】mysql查询优化之索引类型、最左前缀

    一.什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表 ...

  5. MySQL 中的索引

    索引介绍 索引是一种能提高数据库查询效率的数据结构,比作一本字典的目录,可以快速找到对应的记录 索引一般存储在磁盘的文件中,它是占用物理空间的 适当的索引能提高查询效率,过多的索引会影响数据库表的插入 ...

  6. Mysql详解——索引优化

    本篇文章是对Mysql索引的创建以及优化进行一个介绍,关于索引的底层原理可以看我另一篇文章:Mysql详解--索引详解 文章目录 一.索引的创建和设计原则 1. 索引的声明和使用 1.1 索引的分类: ...

  7. 高性能Mysql——创建高性能索引详解

    索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构.这是索引的基本功能,除此之外,本章还将讨论索引其他一些方面有用的属性. 索引对于良好的性能非常 ...

  8. mysql数据库中 索引的作用是什么意思_什么是数据库索引,索引有什么作用

    数据库索引是为了增加查询速度而对表字段附加的一种标识.见过很多人机械的理解索引的概念,认为增加索引只有好处没有坏处.这里想把之前的索引学习笔记总结一下: 首先明白为什么索引会增加速度,DB在执行一条S ...

  9. 聚簇索引mysql语句_mysql索引之聚簇索引与非聚簇索引

    1 数据结构及算法基础 1.1 索引的本质 官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构 本质:索引是数据结构 查询是数据库的最主要功能之一.我们都希望查询速度能尽可能快,因此数 ...

  10. php普通索引和唯一索引,mysql下普通索引和唯一索引的效率对比

    昨天有位同事说,他的网页查询过程中发现普通索引和唯一索引的效率是有差别的,普通索引比唯一索引快 今天在我的虚拟机中布置了环境,测试抓图如下: 抓的这几个都是第一次执行的,刷了几次后,取平均值,效率大致 ...

最新文章

  1. 从 exe.config 读取appSettings 中的配置数据
  2. DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略
  3. console linux 口 没输出_Console很飒,不止log
  4. bigdecimal 科学计数转普通计数_通用计数器的应用价值
  5. android路上的点点滴滴
  6. Python原理 -- 深浅拷贝
  7. Win32程序和控制台应用程序的项目互转设置
  8. 用sql写每年的第三周_如何写好5000行的SQL代码
  9. 《调色师手册:电影和视频调色专业技法(第2版)》——监视器校准
  10. 程序员做饭指南-蒸(米)/炖(使用电饭煲/高压锅/电压力锅)
  11. 图标快速定位工具 ElementUI FontAwesome iView
  12. 使用BetterTouchTool自定义你的touchBar
  13. N1刷入Armbian(Debian11 bullseye)笔记
  14. matlab系统稳态误差终值,Matlab求解给定系统稳态误差
  15. html 截取指定字符串长度,前端js截取指定长度个数字符 v2.0.0
  16. win10安装跳过创建Microsoft账户
  17. Flask+pywebview开发桌面应用实战记录
  18. MAC word2009 压缩图片大小转pdf
  19. ios 绘制线框_iOS 各种边框
  20. 计算广告——读书笔记(二)

热门文章

  1. JavaScript特效——让文字每秒钟进行变色
  2. 十二款常用摄影软件,大部分人只用过十种!
  3. Threejs实现天空盒,全景场景,地面草地
  4. Win7/10 远程桌面发生验证错误 要求的函数不受支持 一键解决
  5. 服务器装系统后安装驱动失败,windows10系统下驱动人生安装驱动失败如何解决
  6. 西威变频器avo下载调试资料_步骤详解|西门子PLCS7-1200通过周期性通讯PZD通道时组态和下载...
  7. java移位运算_Java移位运算符 “
  8. C语言编程题:完美的素数
  9. Description: 80010105 / 服务器出现意外情况。【亲测可用】
  10. 大数据:新动力 新机遇 新途径