2-2 mysql 索引

基于Python的网络拓扑图绘制 最近写论文画了许多图,在这里记录一些。当然,如果仅仅是展示性图片的话也可以使用visio,但是这里我仍然想探究一下如何使用pyhon画出美观的网络拓扑图。(1)根据邻接矩阵画出网络拓扑图(2)画出网络拓扑图,并对节点和链路进行表示,包括对节点和链路的标号,颜色区分,以及尺寸区分。 阅读详情

索引定义

  • 一张描述索引列的列值与记录行之间对应关系的有序表。
  • 索引列可以是单列也可以是若干列,即单列索引和组合索引。
  • 索引可以实现数据的快速检索。

索引分类

单列索引

普通索引
KEY key_name (column_name) 
  • 索引列中允许有空值,值可以重复。
唯一索引
UNIQUE KEY key_name(column_name) 
  • 索引列中允许有空值,但值不可以重复。
主键索引
PRIMARY KEY key_name(COLUMN_name)
  • 索引列中不允许有空值,且值不可以重复。

组合索引

  1. 在表中多个字段的组合上创建索引
  2. 又叫复合索引、联合索引
  3. 使用组合索引时遵循最左前缀原则
    最左前缀原则:
    组合索引就是遵从了最左前缀,利用索引中最左边的字段来匹配行,这样的字段称为最左前缀
    例如:(如何触发索引)
    这里由id、name和age 3个字段构成的索引,key k1(id, name, age)
    索引行中就按id、name、age的顺序存放,
    索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。
    当执行sql查询语句,筛选条件是where id=? AND name=? AND age=?这样的顺序查询时(即,查询条件与索引的字段顺序一致时),就触发了索引;
    (1)只有where的情况,遵从最左原则,条件必须有左边的字段,才会用到索引,中间如果断开了,则都不会用到后面的索引;
    例子: where c1 = ‘1’ and c2 = ‘1’ and c4 = ‘1’,这种情况因为c3没有在条件中,所以只会用到c1,c2索引。
    特殊情况,使用范围条件的时候,也会使用到该处的索引,但后面的索引都不会用到
    例子: where c1 = ‘1’ and c2 > ‘1’ and c3 = ‘1’,这种情况从c2处已经断开,会使用到c1,c2索引,不会再使用到后面的c3索引。
    (2)group by和order by 其实一样,也是遵从最左原则,可以看做继承where的条件顺序,但需要where作为基础铺垫,即没有where语句,单纯的group by | order by 也是不会使用任何索引的,并且需要和联合索引顺序一致才会使用索引。
    例子:
    group | order by c1,由于没有where的铺垫,不使用任何索引
    where c1 = ‘1’ group | order by c2,使用c1,c2索引
    where c1 = ‘1’ group | order by c3,只使用c1索引
    where c1 > ‘1’ group | order by c2,前面也说了,范围搜索会断掉连接,所以也只会使用c1索引
    关于顺序:
    where c1 = ‘1’ group | order by c2,c3,使用c1,c2,c3索引
    where c1 = ‘1’ group | order by c3,c2,只使用c1索引

全文索引

  • 全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。

空间索引

  • 空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。
  • 在创建空间索引时,使用SPATIAL关键字。
    要求,引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL。

索引优缺点

  • 优点
  1. 所有的MySQL列类型都可以被索引,也就是可以给任意字段设置索引。
  2. 加快了数据查询速度。
  • 缺点
  1. 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
  2. 索引也需要占空间,我们知道数据表中的数据也会有最大上限设置的, 如果我们有大量的索引,索引文件可能会比数据文件更快达到上限值。
  3. 当对表中的数据进行增删改时,索引也需要动态的维护,降低了数据的维护速度。

索引使用原则

  1. 并不是每个字段都设置索引就好,也不是索引越多越好
  2. 对更新频繁的表要避免进行过多的索引,对查询频繁的字段应该适当创建索引
  3. 数据量小的表最好不要用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果
  4. 重复值较多的列上不要建立索引,重复值较少的列上要建立索引
  • 总结:表数据量大,查询频繁,单列不同值较多的情况下可以建立索引

索引示例

CREATE TABLE `user_info` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `u_name` varchar(50) DEFAULT NULL COMMENT '用户名',
  `u_no` varchar(10) DEFAULT NULL COMMENT '部门编号',
  `u_d_id` int(11) DEFAULT NULL COMMENT '部门编号',
  `u_age` int(11) DEFAULT NULL COMMENT '年龄',
  `u_salary` int(11) DEFAULT '0' COMMENT '工资',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',
  PRIMARY KEY (`u_id`), # 主键索引
  KEY `k_u_name` (`u_name`), # 普通索引
  KEY `k_u1` (`u_name`, `u_age`, `u_no`) # 组合索引
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

vue2 - elementUI表格table树形结构复选框勾选父子联动示例,el-table树状表格tree复选框checkbox多选框全选/反选取消children(当子级全选中,父级自动勾选) vue2,elementui,el-table树状表格多选,树形结构结合多选框使用,实现单选父子联动全选反选,勾选联动父级勾选,表格多选check父子联动,table表格children如何嵌入复选框,el-table使用多选框与树形数据写一个有半选全选功能的表格,el-table树形表格实现复选框多选效果,表格树状结构多选,每一个row都可以选中并且联动全选按钮,table选父带子选子带父,树形数据与懒加载,Table表格树形结构多选框选中父级时会选中子级,elementUI表格里树形结构嵌套复选框全选全 阅读详情

相关推荐

关于RTP时间戳以及播放器对时间戳的处理

首先,了解时间戳几个基本概念: 时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样频率为8000Hz,那么我们可以把时间戳单位设为1 / 8000。 时间戳增量:相邻两帧之间的时间差(以时间戳单位为基准)。 采样频率: 有些地方也叫时钟频率,即 每秒钟抽取样本的次数,例如音频的采...

toshiba689的专栏 3050

JS对象基本用法

1. 声明对象的两种语法 2. 如何删除对象的属性 3. 如何查看对象的属性 4. 如何修改或增加对象的属性 5. 'name' in obj和obj.hasOwnProperty('name')的区别

m0_72552013的博客 285

Win10下ISE14.7 iMPACT闪退?三步搞定DLL替换(附详细路径)

本文详细介绍了在Windows 10系统下解决Xilinx ISE14.7 iMPACT工具闪退问题的三步DLL替换方案。通过替换关键DLL文件,有效解决了FPGA开发中的兼容性问题,帮助开发者快速恢复工作流程。

weixin_29290259的博客 569

mysql语句记不住_零散的MySQL基础总是记不住?看这一篇就够了!

SQL命令SQL命令分可以分为四组:DDL、DML、DCL和TCL。四组中包含的命令分别如下DDLDDL是数据定义语言(Data Definition Language)的简称,它处理数据库schemas和描述数据应如何驻留在数据库中。CREATE:创建数据库及其对象(如表,索引,视图,存储过程,函数和触发器)ALTER:改变现有数据库的结构DROP:从数据库中删除对象TRUNCATE:从表中删除...

weixin_39796363的博客 170

复现论文报错解决

博主复现论文代码过程中遇到的各种报错及解决方案~

rellvera的博客 1054

Revit模型转点云全流程:从OBJ导出到CloudCompare点云生成(2020版)

本文详细介绍了将Revit模型转换为点云数据的完整流程,特别针对Revit 2020用户。通过使用OBJ导出插件和开源软件CloudCompare,实现从模型导出、网格采样到生成结构化PCD点云的全过程,并提供了关键参数设置与常见问题解决方案,为BIM与三维数字孪生应用提供技术支持。

oo7890的博客 150

MySQL倒序索引测试2

测试环境 MySQL Community Server 8.0.17 准备测试数据 DROP TABLE TB001; CREATE TABLE TB001(ID INT PRIMARY KEY AUTO_INCREMENT,C1 INT); INSERT INTO TB001(C1) SELECT 1 FROM information_schema.col...

weixin_30565199的博客 1078

浅谈车载控制器产线EOL实现方式

1、控制器生产产线上电路检测设计 2、客户总装产线检测设计

u012406840的博客 2万+

mysql单表2千万数据如何添加索引

在MySQL中对包含大量数据的表(如2千万条记录)直接添加索引确实可能会导致操作非常缓慢,甚至导致数据库服务变得不可用。

得塔云的博客 780

CANoe LIN一致性测试之干扰测试Test moudle_LIN Disturbance Block

注意:相邻两个显隐性不同的bit不允许干扰,例如我同时选择bit6和bit7,相邻两个同显隐性的bit允许干扰,例如当我选择bit3和bit4,项,这里我选择ID:为0x2F(PID:0x6F)的frame。需按照具体测试规范实施干扰项,帧头和数据段都可以实现干扰。最近发现一个干扰测试模块,下面是一些具体使用方法。选择干扰项:PID的奇偶校验位(一致性测试干扰测试之手动测试。一个待测试frameD。

yuanyikangkang的博客 3400

【MODBUS】Java实现的Modbus协议类库——推荐j2mod库

Jamod是另一个开源的Modbus Java库。这个库的设计是完全面向对象的,基于抽象,应该支持易于理解、可重用性和可扩展性。它支持Modbus RTU和Modbus TCP,并且提供了主站和从站的功能。这是jamod Modbus库的一个分支,取自1.2.1版本,根据Apache 2许可证发布,包含在该项目的SVN存储库中。j2mod项目的目标是基于Java编程语言生成一个功能更全面的Modbus(tm)通信库。这是一个积极开发的项目,接受具有Modbus主站和从站开发经验的专业软件工程师提交的文件。

开源物联网项目商业化作者 5631

MySQL学习[2] ——MySQL索引

通过将多个字段组合成一个索引,这个索引就叫做联合索引。联合索引的非叶子节点用两个字段的值作为 B+Tree 的 key 值。当在联合索引查询数据时,先按 product_no 字段比较,在 product_no 相同的情况下再按 name 字段比较。这是**最左匹配原则,按照最左优先的方式进行索引的匹配。在使用联合索引进行查询的时候,如果不遵循「最左匹配原则」,联合索引会失效**,这样就无法利用到索引快速查询的特性了。

shenfenxihuan的博客 5172

手把手教你学Simulink——基于Simulink的机械臂正运动学仿真建模示例

机械臂正运动学概述正运动学的核心在于根据每个关节的角度值,通过坐标变换(如DH参数法或齐次变换矩阵)计算出末端执行器相对于基座的位置和姿态。常用的数学工具包括旋转矩阵、平移向量以及它们组合而成的齐次变换矩阵。仿真目标设计并实现一个机械臂正运动学模型。输入关节角度,输出末端执行器的位置和姿态。分析不同关节角度下的机械臂位置变化。假设我们有一个简单的3自由度(DOF)平面机械臂,其各关节的长度分别为l1l1​、l2l2​和l3l3​。在Simulink中,可以使用。

MHD0815的博客 357

2、MySQL索引

从数据结构角度可分为B+树索引、哈希索引、以及FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)和R-Tree索引(用于对GIS数据类型创建SPATIAL索引);从物理存储角度可分为聚集索引、非聚集索引;从逻辑角度可分为主键索引、普通索引,或者单列索引、多列索引、唯一索引、非唯一 索引等等。

sproutBoy的博客 957

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

mysql 索引 二_2、MySQL索引

一、索引介绍索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。二、为啥要使用索引如上图,是MySQL中一张表T的2列数据,现在要找...

weixin_34275305的博客 89

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[MySQL]2-MySQL索引

从索引的匹配原则到索引的创建、索性的使用、执行计划的解释、MySQL对语句的一些优化

啾啾头号大粉丝打工买粮博客 834

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MySQL索引2——索引的类型以及索引的创建

按照B+Tree存储形式方式分类聚集索引和二级索引(两种索引的存储格式)按照索引的特征进行分类主键索引、唯一索引、常规索引、全文索引、空间索引其中主键索引、唯一索引、常规索引都为B+Tree索引结构全文索引为Full-Text索引结构空间索引为R-Tree索引结构按照单个索引的字段个数分类单列索引和联合索引对于索引的优化又有两种索引前缀索引和覆盖索引在讲解索引的具体类型之前我们先了解一下索引的相关知识什么是回表查询。

m0_49864110的博客 1079

2.索引:MySQL 索引分类

索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。分类含义特点关键字主键索引针对于表中主键创建的索引默认自动创建,只能有一个PRIMARY唯一索引避免同一个表中某数据列中的值重复可以有多个UNIQUE常规索引快速定位特定数据可以有多个全文索引全文索引查找的是文本中的关键词,而不是比较索引中的值可以有多个FULLTEXT分类含义特点聚集索引 (Clustered Index)将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据。

m0_72560900的博客 1496

Mysql索引2

但是 UUID 不是递增的,MySQL 中索引的数据结构是 B+Tree,这种数据结构的特点是索引树上的节点的数据是有序的,而如果使用 UUID 作为主键,那么每次插入数据时,因为无法保证每次产生的 UUID 有序,所以就会出现新的 UUID 需要插入到索引树的中间去,这样可能会频繁地导致页分裂,使性能下降。另外字符串越长,占用的内存越大,由于页的大小是固定的,这样一个页上能存放的关键字数量就会越少,这样最终就会导致索引树的高度越大,在索引搜索的时候,发生的磁盘 IO 次数越多,性能越差。

wjcurry的博客 749

mysql学习之2——mysql索引

一、从索引方法(或索引算法)角度看 mysql中主要有四种类型的索引,分别为:B-Tree 索引,Hash 索引,Full-text 索引和 R-Tree 索引,下面针对这四种索引的基本实现方式及存储结构做一个大概的分析。 二、聚集索引和非聚集索引 聚集索引中键值的逻辑顺序决定了表中相应行的物理顺序。   聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和

莫失莫忘-云姐 1581

【MYSQL索引】2 索引创建原则

① 冗余索引举例:建表语句如下我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。

ChanceZhou的博客 1052

MySql索引——索引的结构2

索引的分类、优缺点、相关概念

Alex_cf的博客 860

【MySQL】-14 MySQL索引(上篇MySQL索引类型前置-2-高性能的索引策略)

MySQL索引-高性能的索引策略

yinying293的博客 1471

MySQL的索引总结2

InnoDB中的索引 聚集索引(主键索引) 每个表只有一个主键索引(B +数结构),叶子节点同时保存了主键的值也保存了数据记录,其它节点只存储主键的值。 非聚集索引(辅助索引) 每个表可以有多个 b+树结构,叶⼦节点保存了索引字段的值以及主键的 值,其他节点只存储索引指端的值。 MyISAM中的索引 MyISAM中使用的是非聚簇索引。 ...

joeyin 185

MYSQL初窥索引2——索引分类

上一节中我们介绍了几种数据结构,在mysql中主要用到的是b+树和hash,所以mysql的索引也可由此分类为hash索引和B+索引。这两种索引的使用和你选择的mysql引擎有关,一般Innodb和Myisam可以支持B+索引,Memory支持Hash索引。 1.Hash索引 将关键字进行hash函数转换得到hash值,这个hash值我们一般称为地址,通过这个地址可以找到具体数据,我们将这种索引称为hash索性。 举个例子。 比如一张users表中,在id字段建hash索引,进行查询。 ..

hero_xsx的博客 414

MySQL之索引2

本篇文章主要讲述普通索引和唯一索引的相关细节,假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句: select name from CUser where id_card = ‘xxxxxxxyyyyyyzzzzz’; 所以,你一定会考虑在 id_card 字段上建索引。 由于身份证号字段比较大,不建议你把身份证号当做主键,那么现在你有两个选择,要么给 id_card 字段创建唯

qq_40892728的博客 170
上一篇: 1-7 String
下一篇: 1-8 面向对象 & final & static
WayserKON
博客等级 码龄7年 11粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值