索引介绍和基本使用

news2025/2/13 15:56:13

介绍

索引就是用来加速SQL查询的

由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用的磁盘I/O操作,降低了SQL的查询效率,适得其反。

分类

索引是创建在上的,是对数据库表中一列或者多列的值进行排序的一种结果。索引的核心是提高查询的速度!

物理上(聚集(聚簇)索引&非聚集索引)/逻辑上(…)

1、**普通(二级)**索引:没有任何限制条件,可以给任何类型的字段创建普通索引(创建新表&已创建表,数量是不限的,一张表的一次sql查询只能用一个索引

2、唯一性索引:使用UNIQUE修饰的字段,值不能够重复,主键索引就隶属于唯一性索引

3、主键索引:使用Primary Key修饰的字段会自动创建索引(MyISAM, InnoDB)

4、单列索引:在一个字段上创建索引

5、多列索引:在表的多个字段上创建索引 (uid+cid,多列索引必须使用到第一个列,才能用到多列索引,否则索引用不上)

6、全文索引:使用FULLTEXT参数可以设置全文索引,只支持CHARVARCHARTEXT类型的字段上,常用于数据量较大的字符串类型上,可以提高查询速度(线上项目支持专门的搜索功能,给后台服务器增加专门的搜索引擎支持快速高效的搜索 elasticsearch 简称es 以及 C++开源的搜索引擎 搜狗的workflow)

例子1

在 student 表上 name列创建一个名为 nameidx的 索引:

create index nameidx on student(name);

查看表信息

在这里插入图片描述

查询时就用到索引了

在这里插入图片描述

删除 t_user表中 名为 pwdidx 的索引:

drop index pwdidx on t_user;

相关要点

  • 可以给经常作为过滤条件的字段加索引;

  • 字符串列创建索引时,尽量规定索引长度,而不能让索引长度key_len过长;

  • 索引字段涉及类型强转,函数调用,表达式计算时,索引失效,即:

在这里插入图片描述

在这里插入图片描述

没发生强转就用到了索引:

在这里插入图片描述

例子3:select * 回表问题

当建立某列的普通(二级)索引树的时其会存储对应的主键列,查询索引列和主键列直接在二级索引树获取(InnoDB才可以),如果查询其他列数据则需要拿着主键列去回表查询:

在这里插入图片描述

Using index代表直接二级索引树上获得数据,而NULL代表发生了回表扫描。

如果要使用对多个列进行查询,也可以试图采用联合(多列)索引:

create index age_name_id on student(age,name);
explain select * from student where age = 20 order by name;

在这里插入图片描述

但是多列索引第一列必须要匹配,否则第二列用不上,例如:

在这里插入图片描述

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

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

相关文章

SaaS 系统完全开源介绍

🐯 平台简介 芋道,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。 架构图 管理后台的 Vue3 版本采用 vue-element-plus-admin ,Vue2 版本采用 vue-element-admin 管…

MySQL数据库概念、管理以及SQL语句的基本命令操作

MySQL数据库概念、管理以及SQL语句的基本命令操作 一、数据库概念1、数据库的组成:数据、表、数据库2、数据库类型3、数据库的管理系统(DBMS)4、数据库系统(DBS) 二、数据库系统发展史三、当今主流数据库四、关系型数据库五、MySQ…

HTML+CSS实训——Day15——部署项目到阿里云服务器

前言 因为阿里云有免费的3个月试用,我们可以把项目部署到上面。 选择这个服务 我们用CentOS,更简单,更轻量化。 打开他的VNC控制台 安装宝塔控制面板,输入 yum install -y wget && wget -O install.sh https://downlo…

提高你的小程序开发技能:五大重要步骤

对于任何开发人员来说,想要创建一个小程序并不是一件容易的事情。你需要为每个功能和应用程序编写代码,并且你需要不断地进行测试以确保它不会出错。 那么,我们该如何提高小程序的开发技能呢?通过下面这五个重要步骤,…

Win10麦克风没有声音怎么办?Win10麦克风没有声音恢复教程

Win10麦克风没有声音怎么办?Win10电脑中用户发现麦克风没有声音了,想知道怎么操作才能让声音恢复正常,这时候用户需要打开Win10电脑的设备管理器,点击更新相对应的驱动程序,这样就能轻松解决Win10麦克风没有声音的问题…

Python 课程设计2:学生信息管理系统

开发环境要求 本系统的软件开发及运行环境具体如下。 操作系统:Windows 10。Python版本:Python 3.7.0。开发工具:PyCharm VSCodePython内置模块:os、re。 功能: 1 录入学生信息功能 …

大模型微调方法调研

文章目录 Freeze方法PT方法Lora方法AdaloraPrompt TuningAdapter TuningPrefix tuning遗留问题 Freeze方法 对原始模型部分参数进行冻结操作,仅训练部分参数 PT方法 P-Tuning,仅对大模型的Embedding加入新的参数。 P-Tuning 提出将 Prompt 转换为可以…

Cgroup资源管理

docker资源限制 容器怎么实现资源的限制? 通过Cgroup资源限制 docker 通过Cgroup来控制容器使用的资源配额,包括CPU,内存,磁盘三大方面。 Cgroup是linux内核提供的一种可以限制,记录,隔离进程组所使用的…

IDEA默认代码样式的坑,逗号前面默认加上了空格

IDEA默认代码样式的坑,逗号前面默认加上了空格 个人习惯编写完代码,会使用CTRLALTL进行代码格式化,同时设置了提交的时候进行代码重排和格式化。突然有一天,格式化代码之后发现跟仓库的差异文件几百个,吓死。。。 当然…

代码开发中VO,BO,PO,DO,DTO是什么

代码开发中VO,BO,PO,DO,DTO是什么 MVC的简单定义: M层负责与数据库打交道; C层负责业务逻辑的编写; V层负责给用户展示(针对于前后端不分离的项目,不分离项目那种编写…

一、微机保护装置的典型结构

微机型保护装置实质上是一种依靠单片微机智能地实现保护功能的工业控制装置。一般典型的微机保护结构是由五个部分构成的,即信号输入电路、单片微机系统、人机接口部分、输出通道回路及电源部分,如图1-l所示。 (一)信号…

多线程之基础

写在前面 本文看下多线程基础相关内容。 1:线程基础分析 1.1:摩尔定律失效 戈登.摩尔,英特尔公司的创始人之一,其发现了一个计算机的发展规律,即,处理器的性能每24个月就会翻一倍,这就是摩尔…

Vintage的变体与解读应用

Vintage在风险管理中有很多变体,通常分为以下四类: 1.根据选取切片数据时间不一样,可划分为Month end(月末)与Cycle end(期末)两种。 说明: **Month end:**选取切片数…

基于自适应高斯混合的稀疏注释语义分割

文章目录 Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures摘要本文方法GMM FormulationTraining with AGMM 实验结果 Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures 摘要 稀疏注释语义分割(SASS&#xf…

给图片添加水印的最简单方法

给图片添加水印的最简单方法在数字化时代,图片广泛应用于社交媒体、网站、电商平台等各种场景中。然而,由于互联网分享的便捷性,图片的盗用问题也越来越严重。为了保护图片版权,给图片添加水印已经成为一个非常必要和重要的步骤。…

参与赢大奖!阿里云机器学习平台PAI助力开发者激发AIGC潜能

近年来,随着海量多模态数据在互联网的爆炸性增长和训练深度学习大模型的算力大幅提升,助力开发者一站式快速搭建文生图、对话等热门场景应用,阿里云机器学习平台PAI特推出AIGC加油包,为广大开发者加油助力激发AIGC潜能&#xff0c…

OJ管理员如何进行添加题目

OJ系统简介 Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C) 源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提…

手把手教你进行Mysql条件查询操作

关注“Java架构栈”微信公众号,回复暗号【Java面试题】即可获取大厂面试题 从今天开始,健哥会带各位小伙伴开始学习数据库技术,这是Java开发中必不可少的一部分内容,也是非常重要的技术。本系列教程由浅入深,全面讲解数…

CentOS 停服倒计时,如何打造安全好用的 Linux 系统?

导读近年来,操作系统在国内的讨论极其热烈,也备受各方关注,操作系统在开发者圈中的重要性越来越高。毋庸置疑,对于众多的开发者来说,选择合适的操作系统对于开发效率、代码质量和个人发展都有着非常重要的影响。CSDN 作…

【Protobuf速成指南】oneof类型的使用

文章目录 2.3 oneof 类型一、基本认识二、 3.2 oneof相关函数三、Contact2.3 改写 2.3 oneof 类型 本系列文章将通过对通讯录项目的不断完善,带大家由浅入深的学习Protobuf的使用。这是Contacts的2.3版本,在这篇文章中将带大家学习Protobuf的 oneof 语关…