mysql查询不确定的信息_mysql 07.18

1.索引

搜索引导,索引是一个特殊的数据结构,期存储的是数据的关键信息与详细详细的位置对应关系。

目的:加速查询。

索引的影响:

不是说拥有索引就能加速,得看你的查询语句有没有正确使用索引,

索引也需要占用额外的数据空间

添加索引后将导致增减删除修改变慢(写入)

可添加索引的数据;

查询操作较多写入较少并且数据量很大时

查询与写入操作的占比,10:1或者查询更多

本质上索引原理是尽可能的减小搜索范围

磁盘IO

平均查找一个数据需要花费至少9ms,这段CPU就会切换到其他的程序,想要加速查询,必须减少IO的操作的次数。

索引数据结构

b+树

在b+树中 叶子节点才是存储真实数据的,,叶子数量越多,输的层级越高,导致IO次数增加

为避免这个问题,应在叶子节点尽可能的存储更多数据,应该将数据量小的作为索引

最左匹配原则

当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候(多字段联合索引),b+树会按照从左到右的顺序来建立搜索树,比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没有name的数据来的时候,b+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里查询。比如当(张三,F)这样的数据来检索时,b+树可以用name来指定搜索方向,但下一个字段age的缺失,所以只能把名字等于张三的数据都找到,然后再匹配性别是F的数据了, 这个是非常重要的性质,即索引的最左匹配特性。

聚集索引

聚集索引中包含了所有字段的值,如果拟制定了主键,主键就是聚集索引,如果没有这则找一个非空且唯一的字段作为聚集索引,如果也找不着,自动生成一个字段作为聚集索引

聚集索引中存储了所有的数据

辅助索引

除了聚集索引以外的都叫辅助索引

辅助索引中只包含当前的索引字段和主键的值

覆盖查询

指的是在当前索引结构中能找到的所有需要的数据,如果使用的是聚集索引来查询那么一定是覆盖查询,速度是最快的

回表查询

指的是在当前索引结构中找不到所需的数据,如果使用的是聚集索引来查询,速度慢于聚焦索引。

结论

1.使用占用空间最小的字段来作为索引

2.不要在一行中存储太多的数据,若字段太多可以分表

3.尽量使用覆盖查询

4.如果字段区分度低(重复度高)建立索引是没有意义的,反过来将就是应该将区分度高的字段作为索引

5.模糊匹配中,百分号尽量不要写在前面

6.不要在等号的左边做运算

7.and语句中会自动找一个具备索引的字段优先执行,所以我们应该在and语句中至少包含一个具备索引的字段

8.or语句要避免使用,如果要使用则保证所有字段都有索引才能加速

9.联合索引中,顺序应该将区分度最高的放到左边,最低的放在右边

查询语句中应该保证最左边的索引出现在语句中

另外需要注意的是:如果要查询的数据量非常大,索引无法加速

总结:不是添加了索引就能提速,需要考虑索引添加的是否合理,sql语句是否使用到了索引

创建索引的语法:

create index 索引名称 on 表名(字段名)

联合索引:

create index 索引的名字 on 表名称(字段名,字段名)

删除索引:

drop index 索引名称 on 表名称

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

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

相关文章

MacOS 常用命令汇总

文章目录设置环境变量列出所有可以更新的软件包直接更新所有可以更新的软件包打包压缩文件忽略 Mac OS 文件系统中的扩展属性忽略 Mac OS 专有的隐藏文件创建 DMG 格式的文件修改 DMG 文件的大小修改 DMG 格式中的加密口令挂载 DMG 格式的文件推出 DMG 文件将 ISO 格式的文件转…

java多功能钟_Java 11将包含更多功能

java多功能钟Java 11即将发布的功能是什么?它与Java 9和10有何不同? Java 10可能是新手,但现在该谈论Java 11了。Oracle迈向更快的发布周期意味着更多的特性和功能以比以往更快的速度出现。 尽管距离Java 11发行还有六个月的时间&#xff0…

MacOS 好用的插件和图形界面程序

文章目录文件预览插件OS X 图形界面程序文件预览插件 有些插件可以让 Mac 上的文件预览更有效,比如语法高亮、markdown 渲染、json 预览等。 $ brew cask install qlcolorcode $ brew cask install qlstephen $ brew cask install qlmarkdown $ brew cask install…

java 线程安全性_我如何测试Java类的线程安全性

java 线程安全性我在最近的一次网络研讨会中谈到了这个问题,现在是时候以书面形式进行解释了。 线程安全是Java等语言/平台中类的重要品质,在Java中我们经常在线程之间共享对象。 缺乏线程安全性导致的问题很难调试,因为它们是零星的&#xf…

java asin_Java asin()方法

Java asin()方法asin() 方法用于返回指定double类型参数的反正弦值。语法doubleasin(doubled)参数 d -- 任何原生数据类型。返回值返回指定double类型参数的反正弦值。实例public class Test{public static void main(String args[]){double degrees 45.0;double radians Mat…

MacOS 的软件包管理工具 HomeBrew 详解

文章目录一、软件介绍二、安装 Homebrew使用 Ruby 或者 Shell 脚本安装手动 clone 安装三、卸载 Homebrew四、Homebrew 安装目录五、安装包所在位置六、程序安装目录七、软件版本切换八、清除旧版本文件九、brew 命令汇总安装、升级和删除软件包查看和检验软件包参考示例服务相…

java中的深度克隆浅克隆_了解Java中的可克隆接口

java中的深度克隆浅克隆什么是对象克隆? 对象克隆是生成具有不同名称的对象的精确字段到字段副本的过程。 克隆的对象在内存中有自己的空间,可在其中复制原始对象的内容。 这就是为什么在克隆后更改原始对象的内容时,所做的更改不会反映在克隆…

python env_#!/usr/bin/env python 有什么用?

我们经常会在别人的脚本或者项目的入口文件里看到第一行是下面这样#!/usr/bin/python或者这样#!/usr/bin/env python那么他们有什么用呢?要理解它,得把这一行语句拆成两部分。第一部分是 #!第二部分是 /usr/bin/python 或者 /usr/bin/env python关于 #! …

MacBook(macOS) 如何安装 Homebrew Cask(作废)

文章目录重要通知(不要再去安装 Homebrew Cask 了)Homebrew Cask 简介相关文件和目录Homebrew Cask 安装使用命令下载安装直接从官网下载安装包利用国内源手动 clone下载(推荐)Homebrew Cask 换源重要通知(不要再去安装…

java.io.file()_JAVA基础知识之IO-File类

File类介绍File是java.io包下面的一个类,代表与平台无关的文件或者目录。JAVA中,无论文件还是目录,都可以看作File类的一个对象。File类能对文件或目录新建,删除,获取属性等操作,但是不能直接操作文件内容(…

netflix 模式创新_创新设计模式:单例模式

netflix 模式创新单例设计模式是一种软件设计模式,用于将类的实例化限制为一个对象。 与其他创建设计模式(例如抽象工厂 , 工厂和构建器模式)相比,单例将创建一个对象,但也将负责,因此该对象只…

美式英语 [t] 的发音

爆破音 true [t],发真实的 t。 单词的开始处重读音节的开始处,且前面没有跟着清辅音 [s] held 住不发声 叫法很多,声门塞音、吞音、喉塞(s)音、stop [t],held [t],不爆破的 [t]。 发音的口…

设计模式 原型模式_创新设计模式:原型模式

设计模式 原型模式原型模式用于创建对象的副本。 这种模式非常有用,特别是当从头开始创建对象的成本很高时。 与builder , factory和abstract factory模式相比,它不会从头开始创建对象,而是会克隆/重新创建它。 与单例模式相比&a…

java file 对象_Java里File对象的问题。

Java里File对象的问题。关注:282 答案:2 mip版解决时间 2021-02-02 07:14提问者鉨瞞着所囿亾,爱着誰2021-02-01 08:59import java.io.*;在此基础上怎么修改呢? 谢谢啦最佳答案二级知识专家山河已春2021-02-01 10:06import java.io.*;class JavaFileLis…

美式英语中 [d] 的特别发音

闪音 flap [d],fast [d],闪音 [d] 发音口腔部位说明:舌尖快速拍打上齿龈后,快速释放,轻快拍打 [d] 在两个元音之间发成 fast [d],非重读音节在元音和 [l] 之间发成 fast [d],非重读音节在[r]…

netflix 模式创新_创新设计模式:工厂模式

netflix 模式创新以前,我们对创建模式进行了介绍,并使用抽象工厂模式来创建对象族。 下一个模式是Factory模式 。 当涉及到Java时,工厂模式是最常用的模式之一。 那么工厂模式到底是什么呢? 工厂模式处理创建对象而不指定确切的…

g++ 编译mysql动态库_Linux下g++编译以及使用静态库和动态库的方法详解

下面小编就为大家带来一篇Linux下g编译与使用静态库和动态库的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧在windows环境下,我们通常在IDE如VS的工程中开发C项目,对于生成和使用静态库(*.…

家用电器如何计算功率和消耗的度数

计算公式:((U*I)/1000)*t 说明: 这里计算的都是电器的额定功率、额定电压、额定电流。U 是电压;I 是电流;t 是时间,单位是小时;U*I 得到的是电功率,例如电压12v,电流5A,…

构建器设计模式_创新设计模式:构建器模式

构建器设计模式以前我们看过工厂和抽象工厂模式。 这些模式可以达到目的,并且确实有用,但是在某些用例中,我们必须创建一个非常复杂的对象,并且创建它需要不同的步骤,每个步骤都需要不同的操作。 在这种情况下&#xf…

在线maven托管_使用Amazon s3托管您的Maven工件

在线maven托管如果您使用Amazon Web Services并将Java用于项目,则Amazon S3是托管团队工件的理想场所。 它很容易设置,而且很便宜。 如果您对它们的功能不特别感兴趣,那么它比设置现有存储库选项(jfrog,nexus&#xf…