*MYSQL--索引*

一:介绍

        在MYSQL当中,索引的使用类似于书当中目录的作用,索引的使用能够让查询更加的迅速,比方说搜索mysql这个单词的时候,可以先从首字母为m开头的字母进行查找,这样就大大减少了搜索的时间,而不是从头到尾进行搜索,提高查询的速度

二:类型

        主要分为两大类,一种是根据底层的结构进行区分的(HASH索引,和B-TREE索引),另外一种是根据功能进行区分的;

        1.按照底层数据结构区分

        1>HASH索引:

        HASH索引实际上是根据哈希表的一种索引结构,通过在刚开始的时候,将索引列的值通过哈希算法(f())的方式,将其转化为哈希值.之后如果需要查找,再通过这个哈希值进行查找即可

        2>BTREE索引:

        一种树形结构的索引,从上(树根)往下(分支)不断缩小范围进行相应的查找

        2.按照功能进行区分

        1>单列索引:

                ①普通索引
                ②唯一索引
                ③主键索引

        2>组合索引

        3>全文索引

        4>空间索引

三:依据功能区分讲解:

        1.单列索引(仅仅只包含一个列,但是一个表当中可以有多个的单列索引):

        1>普通索引:

        Ⅰ介绍.

        MYSQL当中最基本的索引类型,无限制,允许在定义索引的列种加入空值以及重复值,仅仅是为了加快查询速度

        Ⅱ 操作.
	添加方式一:直接在创建表的时候添加索引create table emp1(id int,name VARCHAR(20),salary int,INDEX index_id(id)  );添加方式二:创建表之后进行直接添加create index indexname on tablename(columnname);create index index_salary on emp1(salary);添加方式三:通过修改表结构进行添加索引   -- 推荐alter table tablename add index indexname(columnname);alter table emp1 add index index_name(name);删除索引操作:一:drop index 索引名 on 表名二:alter table 表明 drop index 索引名

        2>唯一索引:

        Ⅰ 介绍:

        唯一索引跟普通索引相似,仅仅只有在本索引列上,数值必须是不同的,也可以有空值,但是如果是组合索引,列值的组合必须是唯一的

        Ⅱ 操作:
-- 单列索引添加方式一:create table emp1(id int,name VARCHAR(20),salary int,unique index_id(id)  );添加方式二:创建表之后进行直接添加create unique index indexname on tablename(columnname);create unique index index_salary on emp1(salary);添加方式三:通过修改表结构进行添加索引   -- 推荐alter table tablename add unique index indexname(columnname);alter table emp1 add unique index index_name(name);删除方式:一:drop index 索引名 on 表名二:alter table 表明 drop index 索引名alter table emp1 drop index index_salary;	alter table emp1 drop index index_id;	

        3>主键索引 :

        Ⅰ 介绍:

        主键索引,顾名思义,在创建表的时候,针对某一个列添加的主键之后,系统会自动对其添加主键索引(PRIMARY KEY) 主键索引不允许出现重复值以及NULL值

        2.组合索引:

                1>介绍:

                组合索引也叫做是复合索引,指的是在建立索引的时候使用了多个的字段.比如使用ID和姓名一起建立索引,同样的可以设置是复合普通索引,还是复合唯一索引

                2>操作:

组合索引:组合索引也叫做是复合索引,指的是在建立索引的时候使用了多个的字段.比如使用ID和姓名一起建立索引,同样的可以设置是普通索引,还是唯一索引语法:复合普通索引create index indexname on tablename(name1,name2....);create index index_id_name on emp1(id,name);语法:创建唯一索引create unique index indexname on tablename(name1,name2);create unique index index_id_name on emp1(id,name);索引的删除:alter table tablename drop index indexname;

                3>TIPS:

                1.需要注意的是,如果使用复合唯一索引,那么仅仅当设置的值全部都重复出现,是一模一样的,才会出错误,其他情况下,只有一个索引列不一样也是正确的;

                2.同时,对于复合索引设置的时候,也要注意设置的先后顺序,对于查询也是有一定影响的

	select * from emp1 where name = '张三';select * from emp1 where id = 1001;select * from emp1 where id=1001 and name='张三';select * from emp1 where name ='张三' and id =1001;*前提,设置的复合唯一索引(id,name)对于1进行查询的时候,不会使用复合唯一索引查询,因为没有提供设置的第一个唯一索引---id
而对于2,3都能够使用设置的复合唯一索引进行快速查询即便是对于4,因为MYSQL系统会自动对其进行一定的优化,因此我们可以理解为3,4两个方式在mysql当中的作用是一样的

        3.全文索引

          1.介绍

            1.关键词:fulltext

            2.跟之前所学习的关键字like很像,全文索引主要是用来寻找文本当中的关键字,而不是直接跟索引当中的值进行比较,更像是一个搜索引擎,是以相似度为基本的查询,而不是简单的where语句的参数匹配查询
            3.但是跟like查询不一样的是,like的查询适用于对于数据量比较小的,而全文索引更加适用于大量级别的文本查询,查询速度相比于like的文本查询快了几个数量级!但是全文索引的查询可能会存在一些的精度问题

           2.操作:

创建全文索引的方法一:alter table tablename add fulltext fulltextname(var1,var2....);示例:对于表test添加的content添加全文索引alter table test add fulltext full_content(content);二:create fulltext index indexname on tablename(var1...);使用全文索引关键字:match(var1) against(查询内容);示例:查询表test当中所有包含yo的内容,使用全文查询select * from test match(content) against('yo');  -- 查询不到,因为查询的最小搜索长度是3select * from test match(content) against('you'); -- 可以查询到,满足最小的查询长度

                3.TIPS:

                如果想要通过全文索引查询,必须要注意的是全文索引的两个量(最小搜索长度以及最大搜索长度) 大于,或者是小于这个范围的搜索内容都无法搜索到!
        

		可以使用show variables like '%ft%';  查看相应的数值大小

         4:空间索引:

        1.介绍:

        1>MYSQL仅仅在5.7之后才支持空间索引
        2>空间索引针对的是空间数据类型的字段建立的索引,MYSQL中的空间数据类型主要有4种,geometry,point,linestring,polygon
        3>并且在创建空间索引的时候,这个索引列必须是not null 类型的 

        2.操作:

geometry  含义:空间数据  说明:任何一种空间类型point  含义:点  说明:坐标值lineString  含义:线  说明:有一系列点连接而成的polygon  含义:多边形  说明:由多条线组成操作:create table spa_0(id int primary key auto_increment,  -- 'id'name VARCHAR(20), -- 门店名称point_1 geometry not null,  	-- 经纬度表示 
spatial key sap_index(point_1));

                                                                OVER!感谢观看!

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

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

相关文章

多输入时序预测|GWO-CNN-LSTM|灰狼算法优化的卷积-长短期神经网络时序预测(Matlab)

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 灰狼优化算法: 卷积神经网络-长短期记忆网络: 四、完整程序下载: 一、程序及算法内容…

K8S—Pod详解

目录 一 Pod基础概念 1.1 Pod是什么 1.2 为什么要使用Pod?Pod在K8S集群中的使用方式? 1.3 基础容器pause 二 Pod的分类 2.1 自主式Pod和控制器管理的Pod 2.2 容器的分类 2.2.1 基础容器(infrastructure container) 2.2.2…

【Vuforia+Unity】AR03-圆柱体物体识别(Cylinder Targets)

1.创建数据库模型 这个是让我们把生活中类似圆柱体和圆锥体的物体进行AR识别所选择的模型 Bottom Diameter:底部直径 Top Diameter:顶部直径 Side Length:圆柱侧面长度 请注意,您不必上传所有三个部分的图片,但您需要先为侧面曲面关联一个图像&#…

流程图:理解、创建与优化的视觉工具

流程图:理解、创建与优化的视觉工具 引言 在日常生活和工作中,我们经常遇到需要描述一系列步骤或过程的情况。这些步骤可能是制作一杯咖啡、完成一个项目,或者是解决一个复杂的数学问题。流程图,作为一种强大的视觉工具&#xf…

题目: 数组二叉树(C++)

题目描述 二叉树也可以用数组来存储,给定一个数组,树的根节点的值存储在下标1,对于存储在下标N的节点,它的左子节点和右子节点分别存储在下标2N和2N1,并且我们用值-1代表一个节点为空。 给定一个数组存储的二叉树&am…

深入理解 Vue2 指令

在 Vue2 中,指令是一种特殊的属性,用于在模板中动态地改变 DOM 元素的行为。Vue2 提供了许多内置指令,使得我们可以更加方便地对 DOM 进行操作。在这篇博客中,我们将深入了解 Vue2 中的一些常用指令。 v-bind 指令: v-…

android pdf框架-4,分析vudroid源码1

前言 上文基于recyclerview修改,没有自定义layoutmanager,其实并不是一个好的阅读器,缩放功能有限,放大了容易内存溢出. 本文,从修改vudroid源码来完成一个阅读器. 为什么是vudroid? 它是基于view系统的相对完整的功能代码没有那么抽象,简洁容易修改功能没有完善,有修改空间…

关于正则中的Pattern和Matcher的使用

关于正则中的Pattern和Matcher的使用 1 简介2 语法3 案例 在项目中, 经常需要对请求的数据进行格式,内容校验, 而使用正则表达式, 比较简单优雅实现校验功能. 故记录一下正则中Pattern和Matcher的使用. 1 简介 ​ java.util.regex包下的Pattern和Matcher都是Java中用于正则表达…

Spring启动生命周期

Spring Boot 生命周期详解 Spring Boot 应用程序的生命周期包含几个阶段,每个阶段都有特定的事件和钩子,允许开发者在应用程序的不同生命周期阶段插入自定义逻辑。以下是 Spring Boot 生命周期的主要阶段和对应的事件: 准备阶段:…

【Docker实操】部署php项目

概述 最终达成的容器部署结构和原理如下图: 一、获取nginx、php官方镜像 docker pull nginx //拉取nginx官方镜像 docker pull php:7.4-fpm //拉取php官方镜像需要获取其他可用的php版本,可以上【docker hub】搜索【php】,所有的【xxx-fp…

【工具】阿莫智能设备之脱机烧录器K202C-1

注意,本文档仅仅是介绍烧录器的资料构成,并非烧录器的说明书,详细请看各对说明书及视频。 1. 资料图解 首先需要下载资料,通常稳定发布版本可以从 www.amomcu.cn 下载, 也可以向我们客服获取最新版本, 获…

浅谈redis之SDS

SDS 什么是SDSSDS结构len的作用free的作用buf的作用简单示例 SDS机制重新分配内存分配内存机制小于1MB情况大于1MB情况为什么这样分配 惰性释放内存 什么是SDS SDS:全名 simple dynamic string,意为简单动态字符串,作为redis里的一种数据结构…

六.生成makefile文件 并基于makefile文件编译opencv

1.点击【Generate】 生成makefile文件 2.进入目录下编译opencv源码,mingw32-make -j 8 3..编译出现报错 4.取消[WITH_OPENCL_D3D11_NV]选项,再次【configure】【generate】 然后再次编译:mingw32-make -j 8

科技守护大唐遗宝,预防保护传承千年

​ 一、“大唐遗宝——何家村窖藏出土文物展” 陕西历史博物馆的“唐朝遗宝——何家村窖藏出土文物展”算得上是博物馆展览的典范。展览不仅在于展现了数量之多、等级之高、种类之全,更在于对唐朝历史文化的深入揭露。 走入大唐财产展厅,好像穿越千年前…

解决TCP中Bind failed烦恼

文章目录 概要样例代码 概要 当第一次运行服务端时正常,第二次运行时出现Bind failed问题。 在实际使用中,如果您尝试启动一个服务端程序并且遇到了 “Bind failed” 的错误信息,这通常意味着尝试绑定(bind)的端口已…

Boss直聘聊天问答

主动打招呼常用语: 1.您好,我看到贵公司的招聘需求很符合我的技术栈,方便约个面试聊一聊嘛? 2.我叫郭治江,2022年毕业,物联网工程专业,目前从事Java开发工作已经三年了,上家公司是…

推理任务稳定提点大揭秘:力大砖飞背后的科学

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

GB/T 17639-2023 长丝纺粘针刺非织造土工布检测

长丝纺粘针刺非织造土工布是指以聚酯或聚丙烯为原料,经纺丝、铺网、针刺加固而成的长丝纺粘针刺非织造布。 GB/T 17639-2023 长丝纺粘针刺非织造土工布测试项目: 测试要求 测试标准 纵横向抗拉强度 GB/T 15788 纵横向最大负荷下伸长率 GB/T 15788 …

Nginx相关命令

进入nginx程序目录,使用cmd在本目录下打开, 启动nginx:使用命令start nginx 本地重启nginx:nginx -s reload 停止:nginx -s stop 或者 nginx.exe -s quit 查看Nginx版本:nginx -v

功率MOSFET体二极管的连续载流能力

功率MOSFET体二极管的连续载流能力 1.概述2.MOSFET 漏源电压限制3.体二极管电流能力4.计算案例5.降额 tips:资料主要来自网络,仅供学习使用。 在电力电子领域或者在大功率应用场境下,我们经常会用到开关管功率MOSFET以及其内部的二极管。 那…