怎么运用索引查处mysql表中的数据_深入理解MySQL数据库索引原理及实现,快速检索数据库 MySQL数据库使用教程...
免费学习推荐:
一、索引的概念
1、索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 (类似于C语言的链表通过指针指向数据记录的内存地址) 。
2、使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据,因此能加快数据库的查询速度。
3、索引就好比是一本书的目录,可以根据目录中的页码快速找到所需的内容。
4、索引是表中一列或者若干列值排序的方法。
5、建立索引的目的是加快对表中记录的查找或排序。
二、索引的作用
1、设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。
2、当表很大或查询涉及到多个表时,使用索引可以成千,上万倍地提高查询速度。
3、可以降低数据库的I/O成本,并且索引还可以降低数据库的排序成本。
4、通过创建唯一性索引,可以保证数据表中每一行数据的唯一性。
5、可以加快表与表之间的连接。
6、在使用分组和排序时,可大大减少分组和排序的时间。
三、索引的副作用
1、索引需要占用额外的磁盘空间。
对于 MyISAM 引擎而言,索引文件和数据文件是分离的,索引文件用于保存数据记录的地址。
而 InnoDB 引擎的表数据文件本身就是索引文件。
2、在插入和修改数据时要花费更多的时间,因为索引也要随之变动。
四、创建索引的原则依据
索引随可以提升数据库查询的速度,但并不是任何情况下都适合创建索引。因为索引本身会消耗系统资源,在有索引的情况下,数据库会先进行索引查询,然后定位到具体的数据行,如果索引使用不当,反而会增加数据库的负担。
1、表的主键、外键必须有索引。因为主键具有唯一性,外键关联的是主表的主键,查询时可以快速定位。
2、记录数超过300行的表应该有索引。如果没有索引,每次查询都需要把表遍历一遍,会严重影响数据库的性能。
3、经常与其他表进行连接的表,在连接字段上应该建立索引。
4、唯一 性太差的字段不适合建立索引。
5、更新太频繁地字段不适合创建索引。
6、经常出现在 where 子句中的字段,特别是大表的字段,应该建立索引。
7、索引应该建在选择性高的字段上。
8、索引应该建在小字段.上,对于大的文本字段甚至超长字段,不要建索引。
五、索引的分类和创建
(一)、普通索引
普通索引:最基本的索引类型,没有唯一性之类的限制。
1、 直接创建索引
2、修改表方式创建
3、创建表的时候指定索引
(二)、唯一索引
1、直接创建唯一索引
2、修改表的方式创建
为了方便实验,我先删除了之前的索引
3、创建表的时候指定
(三)、主键索引
ALTER TABLE 表名 ADD PRIMARY KEY (列名);
(四)、组合索引(单列索引与多列索引)
(五)、全文索引
修改表的方式创建
创建表的时候指定索引
#数据类型可以为 CHAR、VARCHAR 或者 TEXT
使用全文索引查询
六、查看索引
Table
表的名称
Non_unique
如果索引不能包括重复词,则为 0;如果可以,则为 1。
Key_name
索引的名称。
Seq_in_index
索引中的列序号,从 1 开始。
Column_name
列名称。
Collation
列以什么方式存储在索引中。在 MySQL 中,有值‘A’(升序)或 NULL(无分类)
Cardinality
索引中唯一值数目的估计值。
Sub_part
如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为 NULL。
Packed
指示关键字如何被压缩。如果没有被压缩,则为 NULL
Null
如果列含有 NULL,则含有 YES。如果没有,则该列含有 NO
Index_type
用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)
Comment
备注
七、删除索引
八、实例
更多相关免费学习推荐:mysql教程(视频)
怎么运用索引查处mysql表中的数据_深入理解MySQL数据库索引原理及实现,快速检索数据库 MySQL数据库使用教程...相关推荐
- sparksql加载mysql表中的数据
sparksql加载mysql表中的数据 <dependency><groupId>mysql</groupId><artifactId>mysql-c ...
- MySQL—表中添加数据
1.在t_student数据库表中插入数据 注意:插入的数据必须和数据表字段一一对应 insert into t_student values (1,'张三','男',18,'2022-5-8','软 ...
- php怎么删除表数据,php怎样删除数据表中的数据_后端开发
php删除数据表中的数据的要领:能够经由过程mysqli_query()函数连系DELETE FROM语句来举行删除.DELETE FROM语句用于从数据库表中删除纪录,语法结构为:[DELETE F ...
- 如何查询MySQL表中的数据,这些操作你得明白!
前言 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可 ...
- 使用go脚本向MySQL表中写入数据
为什么80%的码农都做不了架构师?>>> 创建MySQL表 CREATE TABLE `atest` (`c1` bigint(25) NOT NULL,`c2` varcha ...
- 记录一下误删除了mysql表中的数据后的恢复过程
用navicat删除数据库中的入侵数据,导致删顺手了,把一些看似重复数据的重要数据在表中直接右键删除掉了(相当于delete from table命令),而该数据库没有做过这些数据的备份,同时没有开启 ...
- mysql中怎么查表中的数据_[MySQL] 用select查询数据表中的记录
用select查询数据表中的记录 select 语句的基本语法如下: select selection_list 选择那些列 from table_list 从那个表去选择行 where primar ...
- Oracle中如何用一个表的数据更新另一个表中的数据_转载
文章目录 声明 一 准备阶段 1.建表语句 2.插入数据 3.两张表如下图 二 sql查询 1. 最容易想到的办法:通过子查询 ,直接 update ,如下: 2. 加入限制条件,对于 table1中 ...
- 获取多张表中的数据_趣说:什么是数据结构和算法
相信你的电脑里面 应该有这么一个 视频教程文件夹 不用我说 在这里面肯定是你 精心收藏的精华教程 不辞辛劳的你 按照每个优秀的老师 都分门别类的安排好 每一系列的精品教程 当你心血来潮之时 亦或是求知 ...
最新文章
- eclipse/myeclipse 中,如何删除已经下载过的插件(举例:删除scala ide)
- pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出
- python自动化测试-D8-学习笔记之一(面向对象编程)
- how to improve efficiency of graphic neural network?
- LAMP环境下动态网站许愿墙的搭建
- vues响应接口and实例
- 【Python CheckiO 题解】Pawn Brotherhood
- 两台linux之间互传php脚本,linux下两台服务器实现同步的方法
- rxvt_为什么我使用rxvt作为终端
- 拓端tecdat:R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性
- 你根本不会休息(转)
- ROS : RoboWare Studio远程部署
- linux画图工具的下载,Drawing Linux(简单画图工具)最新版下载
- undo歌词中文音译_《U-n-d-e-r–STANDING!》中文歌词及音译
- CodeForces 1556C :Compressed Bracket Sequences 思维
- LIO-SLAM分析
- node生成图形验证码
- 提高Java反射速度的方法以及对setAccessable的误解
- 写法更自由的Table表格--BeeGridTable
- 联想Thinkpad E15 息屏后 无法唤醒
热门文章
- 海信威武!吞并日本东芝,又一家日本巨头倒下
- 大工17春c和c语言程序设计在线作业1,大工18春《汇编语言程序设计》在线测试123满分...
- 【C语言编程学习】当鸣人放了一个螺旋丸,我突然发觉这个事情不简单......
- java计算机毕业设计霍山石斛网站源程序+mysql+系统+lw文档+远程调试
- java邮件系统设计_基于java技术的邮件系统设计与实现
- Spring Boot 配置邮件发送
- 解决变频器干扰低压电子设备的经验
- 微信小程序:(更新)云开发微群人脉
- 餐饮用品批发拓客的10个经典方法
- 38 字典名[键名]=值 向字典增加键值对