数据库之索引

1. 索引的定义

索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址。

索引的作用: 加快表的查询速度,还可以对字段排序。

2. 索引的工作方式

有了索引后,要根据条件查询某行数据时,需要先扫描全表,再定位某行数据的位置。有了索引之后,会先通过查询条件的字段值找到其索引对应的行记录数据的物理地址。然后根据物理地址访问相应的行记录的数据,就像根据书目录的页码快速找到所需的内容。

副作用:会额外占用磁盘空间,更新包含索引的表会花费更多的时间(效率会变慢)。

3. 创建索引的依据

1)表中的记录行数较多时,一般超过300行的表建议要有索引。

2)  建议在表中的主键字段,外键字段,多表连接使用的公共关键字段、唯一性较好的字段、不经常更新的字段,经常出现在where、group by、order by子语句的字段,小文本字段上面创建索引。

3)不建议在唯一性较差的字段,更新太频繁的字段,大文本字段上面创建索引。

4. 索引的类型

普通索引

唯一索引

主键索引

组合索引

全文索引

5. 索引的增删查

##添加普通索引的方法
create index 索引名称 on 表名 (字段名);
 
alter table 表名 add index 索引名称 (字段);
 
还可以在创建表格时候就添加,但是不建议使用
create table 表名(字段1 数据类型,....index 索引名称 (字段));

唯一索引创建

与普通索引类似,但区别是唯一索引列的每个值都唯一。唯一索引允许有空值(注意和主键不同)。如果是用组合索引创建,则列值的组合必须唯一。添加唯一键将自动创建唯一索引。

create unique index 索引名 on 表名 (字段名);
 
alter table 表名 add unique key (字段名);
 
alter table 表名 add unique 索引名 (字段名);

主键索引创建

是一种特殊的唯一索引,必须指定为“PRIMARY KEY”。一个表只能有一个主键,不允许有空值。 添加主键将自动创建主键索引。

alter table 表名 add primary key (字段名);

组合索引创建

可以是单列上创建的索引,也可以是在多列上创建的索引。需要满足最左原则,因为 select 语句的 where 条件是依次从左往右执行的,所以在使用 select 语句查询时 where 条件使用的字段顺序必须和组合索引中的排序一致,否则索引将不会生效。


create index 索引名称 on 表名 (字段1,字段2...);
 
alter table 表名 add index 索引名称 (字段1,字段2...);

全文索引

适合在进行模糊查询的时候使用,可用于在一篇文章中检索文本信息。


create fulltext index 索引名称 on 表名 (字段);
 
alter table 表名 add fulltext 索引名称  (字段);
 
支持模糊查询   
select .... from 表名 where match(字段) against('单词');

查看索引

show create table 表名
show index from 表名
show keys from 表名

删除索引

drop index 索引名 on 表名;
alter table 表名 drop index 索引名;
alter table 表名 drop primary key;

6. 遇到select 语句查询速度慢怎么办

1. 先使用explain分析select语句,看key字段,确定select 语句是否使用索引或索引是否使用正确。

2. 再根据select语句中where子语句使用的条件字段创建相应的单列索引或组合索引,组合索引要满足最左原则。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IPA打包过程中的Invalid Bundle Structure错误如果解决

在iOS应用程序开发中,打包和发布应用程序是一个必要的步骤。有的时候在打包的过程中可能会遇到一些错误,其中一个比较常见的错误是"Invalid Bundle Structure"。这个错误通常意味着应用程序的文件结构不正确,而导致的无法成功打包应…

自动循环采集全站文章

如果文章页面中,有上一篇、下一篇文章,推荐文章等链接,我们可以利用这个特点,仅配置采集一个文章页面,即可采集整个网站或某个分类下的所有文章,实现自动循环采集全站数据,非常方便简单。 使用…

天然药物,到2028年市场规模将达到 3082亿美元

天然药物,也称为草药或传统药物,是指将植物、矿物和动物产品等天然物质用于药用目的。近年来,人们对天然药物作为传统药物的替代品越来越感兴趣,这导致了天然药物市场的增长。全球天然药物市场: 全球天然药物市场预计从…

2024腾讯云服务器租用价格表_优惠活动大全_最新报价

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

安科瑞余压监控系统在住宅小区的应用方案——安科瑞 顾烊宇

【摘要】:本文分析了火灾发生时人员伤亡的主要原因——烟雾,并针对该原因提供切实可靠的系统应用解决方案,并通过具体案例,从设计依据、产品选型、系统组网、现场安装等方式介绍余压监控系统,希望可以在火灾发生时较大…

BMS均衡技术

一、电池的不一致性? 每个电池都有自己的“个性”,要说均衡,得先从电池谈起。即使是同一厂家同一批次生产的电池,也都有自己的生命周期、自己的“个性”——每个电池的容量不可能完全一致。例如以下的两个原因都会造成电池不一致…

树与二叉树笔记整理

摘自小红书 ## 树与二叉树 ## 排序总结

【数据库】MySQL数据库存储引擎、数据库管理和数据库账号管理

【数据库】MySQL数据库存储引擎、数据库管理和数据库账号管理 一 常用的数据引擎1.1 InnoDB存储引擎1.2 MyISAM存储引擎1.3 Memory存储引擎1.4 ARCHIVE存储引擎 二 数据库管理2.1 元数据库概念与分类2.2 相关操作命令 三 数据表的管理四 数据库账户管理 一 常用的数据引擎 数据…

清风数学建模笔记-多分类-fisher线性判别分析

内容:Fisher线性判别分析 一.介绍: 1.给定的训练姐,设法投影到一维的直线上,使得同类样例的投影点尽可能接近和密集,异类投影点尽可能远离。 2.如何同类尽可能接近:方差越小 3.如何异类尽可能远离&#…

阿里云2核2G3M服务器能放几个网站?有限制吗?

阿里云2核2g3m服务器可以放几个网站?12个网站,阿里云服务器网的2核2G服务器上安装了12个网站,甚至还可以更多,具体放几个网站取决于网站的访客数量,像阿里云服务器网aliyunfuwuqi.com小编的网站日访问量都很少&#xf…

获取网页信息

每次copy & paste总是很麻烦,现在有点问题,先记录下来。 需求:获取url 里Feature list,并输出表格形式 可以用Convert curl commands to code:得到get请求的header,cookie等 import requests import…

Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提 之前写过一篇文章:https://qa-lsq.blog.csdn.net/article/details/119782694 只是简单尝试了一下生成一个随机手机号码。 但是如果在工作中一个实际场景要用的二次开发,可能会遇到一些问题。 比如这样一个场景: Mobile或者前端调用部分…

【动态规划】LeetCode-10. 正则表达式匹配

10. 正则表达式匹配。 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 …

conda: error: argument COMMAND: invalid choice: ‘activate‘

1.问题 2.解决方法 1.寻找基本路径 conda info | grep -i base environment2.更新资源 source /Users/suhang/miniconda3/etc/profile.d/conda.sh3.重新运行命令 conda activate chatglm参考图:

UI5与后端的文件交互(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、RAP的开发1. 创建表格2. 创建CDS Entity3. 创建BDEF4. 创建implementation class5. 创建Service Definition和Binding6. 测试API 二、创建UI5 Project1. 使…

jsp+ssm+mysql实现的酒店预定管理系统项目----计算机毕业设计

项目介绍 jspssm框架(spring、springMVC、mybaits)实现的酒店预定管理系统的源码和视频开发教程。本系统分前台和后台管理两部分,前台实现了用户登录注册、查看房型信息、预定房间、提交订单、查看个人订单、修改个人资料等,后台…

打造高效会员卡营销策划方案,提升门店业绩

在激烈的行业竞争中,如何有效提升店铺的业绩,提高客户粘性和消费频次呢?答案可能就在你手中——那就是有效的会员卡营销策略。下面给大家探讨如何设计会员卡营销策划方案,从而增加客户的忠诚度,并推动销售增长。以目前…

亚信安慧AntDB数据库引领数字时代:数字驱动创新峰会主旨演讲深度解析

近日,庄严肃穆的数字驱动创新峰会在中国首都北京隆重召开,聚焦于探讨数据经济的创新前沿。在此次盛会中,备受瞩目的亚信安慧AntDB数据库荣幸受邀参与,该数据库的副总裁张桦以其深刻见解和卓越经验发表了引人瞩目的主旨演讲。 图1&…

2024年个人工作计划怎么写?新年待办计划这样写更方便

元旦的钟声还在耳边回响,2024年的新篇章已经开启。面对新的一年,我深知一个清晰、实用的个人工作计划是多么重要。它不仅是指引我前进的灯塔,更是我实现目标、提升效率的秘密武器。 但如何制定这样一个计划呢?在过去,…

Github 2023-12-31 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3Swift项目1Java项目1HTML项目1Astro项目1Python项目1C项目1Dart项目1Jupyter Notebook项目1C项…