MySQL之索引初步

news2024/11/23 9:33:03

1. 索引概念

数据库是⽤来存储数据,在互联⽹应⽤中数据库中存储的数据可能会很多(⼤数据), 数据表中数据的查询速度会随着数据量的增⻓而逐渐变慢 ,从⽽导致响应⽤户请求的速度变慢——⽤户体验差,我们如何提⾼数据库的查询效率呢?

索引,就是⽤来提⾼数据表中数据的查询效率的
索引,就是将数据表中某⼀列/某⼏列的值取出来构造成便于查找的结构进⾏存储,⽣成数据表的 ⽬录。当我们进⾏数据查询的时候,则先在 ⽬录 中进⾏查找得到对应的数据的地址,然后再到数据表中根据地址快速的获取数据记录,避免全表扫描。
这个过程就好比从新华字典里查字一样。

2. 索引分类

MySQL中的索引,根据创建索引的列的不同,可以分为:
(1)主键索引:在数据表的主键字段创建的索引,这个字段必须被primary key修饰,每张表只能有⼀个主键;
(2)唯⼀索引:在数据表中的唯⼀列创建的索引(unique),此列的所有值只能出现⼀次,可以为NULL;
(3)普通索引:在普通字段上创建的索引,没有唯⼀性的限制;
(4)组合索引:两个及以上字段联合起来创建的索引。

说明 :
a. 在创建数据表时,将字段声明为主键(添加主键约束),会⾃动在主键字段创建主键索引;
b. 在创建数据表时,将字段声明为唯⼀键(添加唯⼀约束),会⾃动在唯⼀字段创建唯⼀索引。

3. 创建索引

(1)唯一索引

-- 创建唯⼀索引: 创建唯⼀索引的列的值不能重复
-- create unique index 索引名 on 表名(列名);
-- 为name字段创建索引
create unique index index_test1 on student(name); 

(2)普通索引

create index index_test2 on student(age); 

(3)组合索引

create index index_test3 on student(name, age);  

(4)全文索引
MySQL 5.6 版本新增的索引,可以通过此索引进⾏全⽂检索操作,因为MySQL全⽂检索不⽀持中⽂,因此这个全⽂索引不被开发者关注,在应⽤开发中通常是通过搜索引擎(数据库中间件)实现全⽂检索。

4. 索引使用

索引创建完成之后⽆需调⽤,当根据创建索引的列进⾏数据查询的时候,会⾃动使⽤索引
组合索引需要根据创建索引的所有字段进⾏查询才能触发

select * from student where name="范瑶"; 
-- 组合索引需要根据创建索引的所有字段进⾏查询
-- select * from student where name="范瑶"; 不会触发索引
 
select * from student where name="范瑶" and age=25; 

5. 查看索引

(1)查询整张表的索引

show create table 表名\G;

在这里插入图片描述

(2)查询整张表的索引

show indexes from 表名;

在这里插入图片描述
(3)查询整张表的索引

show keys from 表名;

6. 删除索引

索引是建⽴在表的字段上的,不同的表中可能会出现相同名称的索引,因此删除索引时需要指定表名

-- 格式
drop index 索引名 on 表名;
drop index index_test1 on student;

7. 使用初步总结

7.1 优点
(1)索引⼤⼤降低了数据库服务器在执⾏查询操作时扫描的数据,提⾼查询效率;
(2)索引可以避免服务器排序、将随机IO变成顺序IO;

7.2 缺点
(1)索引是根据数据表的列所创建的,当数据表中数据发⽣DML操作时,索引⻚需要更新;
(2)索引⽂件也会占⽤磁盘空间。

7.3 注意事项

(1)数据表中数据不多时,全表扫描可能更快,不要使⽤索引;
(2)数据量⼤但是DML操作很频繁时,不建议使⽤索引;
(3)不要在数据重复读⾼的列上创建索引(例如性别);
(4)创建索引之后,要注意查询SQL语句的编写,避免索引失效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/560323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

射频电容物位开关电容传感器的分类与应用

​射频电容物位开关电容传感器是一种常见的物位检测装置,广泛应用于粉状物料、液体、颗粒物料等不同类型的物料的检测和控制。本文将对射频电容物位开关电容传感器的分类和应用进行详细介绍。 一、射频电容物位开关电容传感器的工作原理 射频电容物位开关电容传感…

perl 通过 swig 调用 c++代码

Swig 是一个软件开发工具,可以简化不同语言与 C/C 的交互(直接在其它语言的代码中调用 C/C 的代码)。   记录一下成功用 perl 调用 c 代码的例子。 环境 操作系统:centos 7.9 perl: version 5.16.3 swig: version 2.0.10 g: v…

C++中map的用法

博主简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。 博主主页:陈童学哦 所属专栏:CSTL 前言:Hello各位小伙伴们好!欢迎来到本专栏CSTL的学习,本专栏旨在帮助大家了解…

接口测试五个重要测试点

一、功能测试 接口的功能是否实现、接口是否按照设计文档实现(如:username参数写成了user)———接口文档是在整个开发中使用,所以接口设计要与接口文档的设计保持一致。 1、兼容性测试:如:接口进行了调整…

【ACM训练】2023 河南 CCPC省赛 vp

2023 河南 CCPC省赛 题目链接 VP赛况: 目录 2023 河南 CCPC省赛赛况及总结赛况总结 补题 赛况及总结 赛况 开场:我提前打印了题册,于是我们开始分开看题目,我先看了A,发现很签,遂上机,8 m…

【软考系统规划与管理师笔记】第1篇 信息系统综合知识

目录 写在前面 1. 信息的基本概念 2. 信息的定量描述 3. 信息的传输模型 3. 信息系统的主要性能指标 4. 信息化的层次 5. 电子政务和电子商务 6. 信息系统 6.1 系统开发的方法 6.2 信息系统总体规划 6.3 信息系统规划内容 7 IT战略 8 习题收集 写在前面 系统规划与…

从8连挂到面面offer,我只用了一个月,面试25K测试岗血泪经验分享给你

直到如今,我才敢把这段经历分享出来,毕竟一个多月前,我是经历了面试八连挂的人。作为一只骄傲的软件测试工程师,恨不得找一块豆腐撞死。但是在闭关修炼了一个多月之后,重新出来面试,面试了五家公司&#xf…

《人月神话》译文修订明细(2)-读者可以对照修改

《人月神话》译文修订明细(1)-读者可以对照修改 《人月神话》译文修订如下,读者可以对照自己手上的书修改。 相关阅读 这回真要动刀子-征集《人月神话》中译本的翻译修正>> 第一章(续) 原译文 水平边界以下…

Graphpad Prism9.5.1 安装教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件,它可以将科学图形、综合曲线拟合(非线性回归)、可理解的统计数据、数据组织结合在一起,除了最基本的数据统计分析外,还能自动生成统…

Mysql中千万数据查询浅析

假如mysql数据库中有一千万数据,如何进行查询,查询效率如何,下面进行简单的分析。 1、准备数据 也许有些人没遇见过上千万数据量的表,没关系,下面通过sql脚本准备一下数据,环境为:mysql5.7. 1…

提示msvcr120.dll丢失怎么办?由于找不到msvcr120.dll如何修复?

msvcr120.dll 是 Microsoft Visual C 文件中的一个重要组件。它是一种动态链接库,包含了很多函数,提供了许多基础的 C 运行时支持。这个库文件的主要功能是提供 C 应用程序的运行时环境,它是一些常用的 C 运行时库文件的集合。这些库包括了 m…

队列:数据结构中的排队之道

本篇博客会讲解队列这种数据结构,并使用C语言实现。 概况 什么是队列呢?队列是一种先进先出的数据结构,即First In First Out,简称FIFO。队列有2端,分别是队头和队尾,规定只能在队尾插入数据(…

华为OD机试真题 Java 实现【单核CPU任务调度】【2023Q2 200分】

一、题目描述 现在有一个CPU和一些任务需要处理,已提前获知每个任务的任务D、优先级、所需执行时间和到达时间。 CPU同时只能运行一个任务,请编写一个任务调度程序,采用“可抢占优先权调度”调度算法进行任务调度,规则如 下&…

嵌入式Android系统启动基本分析

目录 第一:Android系统架构图: 第二:Android 系统启动流程如下: 第三:Android 层级分析 第四:案例分析 第五:Android 权限问题 上一篇我们讲了 Linux 系统的启动流程,本文讲解一…

QTableWidget样式设置

QTableWidget的样式分为几个部分: 分别是: 外框:QTableWidget 表头:QHeaderView 表头字段:QHeaderView::section 表格:QTableWidget::item 选中的表格:QTableWidget::item::selected 水平滚动条…

课时七—进程同步(一)

1、同步与互斥的基本概念 1)临界资源 (1)临界资源:是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息…

javase个人小结

一、数据类型 二、运算符(需要注意的) /:如果是int类型,那么会保留整数,舍去余数 列如:10/3 3 优先级:拿不准就加括号,括号优先级最高 三、类和对象 什么是封装,继承…

连接器信号完整性仿真教程 三

本文将讲解CST边界(Boundary)、背景(Background)的概念及背景材料与边件设置。边界与背景是CST仿真电磁的基础,有必要了解它,并掌握其设置方法与步骤。并以两个实例演示了具体设置的操作。 一 背景、边界与…

深度学习—目标检测标注数据集

深度学习之目标检测 PASCAL数据集 PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛,PASCAL全称:Pattern Analysis,Statical Modeling and Computational Learning,是…

磐维数据库应用案例荣获2022年度杭州商用密码应用优秀案例二等奖

2023年5月8日上午,在2023西湖论剑数字安全大会商用密码应用论坛上发布了2022年度杭州商用密码应用优秀案例,其中由中国移动通信集团浙江有限公司和中移动信息技术有限公司联合申报的 《基于磐维数据库的CRM营销系统商用密码应用案例》荣获二等奖。 20…