MySQL--优化(索引--索引创建原则)

MySQL–优化(索引–索引创建原则)

  1. 定位慢查询
  2. SQL执行计划
  3. 索引
    • 存储引擎
    • 索引底层数据结构
    • 聚簇和非聚簇索引
    • 索引创建原则
    • 索引失效场景
  4. SQL优化经验

一、索引创建原则

我们使用的索引种类:

  • 主键索引
  • 唯一索引
  • 根据业务创建的索引(复合索引)

二、索引创建原则有哪些?

想象一个图书馆,里面的书籍没有按照任何顺序排列。如果你想找一本书,你可能需要一本一本地查看,这会非常耗时。这就是没有索引的数据库的感觉。

现在,想象图书馆员决定按照书的标题或作者来排序书籍。突然之间,找书变得容易多了。这就是索引的力量。

在这里插入图片描述

1、针对于数据量较大,且查询比较频繁的表建立索引

  • 一般情况下单表超过10万数据(就去可以添加索引)
  • 比喻:在一个繁忙的火车站,如果没有指示牌或电子显示屏告诉乘客哪趟列车在哪个站台,乘客就会四处寻找,造成混乱。索引就像这些指示牌,帮助数据库快速定位到需要的数据。
    在这里插入图片描述

2、针对于常作为查询条件(where)、排序 (order by) 、分组(group by)操作的字段建立索引。

  • 例子:如果你经常按照员工的入职日期来查询或排序数据,那么在这个字段上建立索引会很有用。

3、尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。

  • 比喻:想象一个只有男性和女性两种选择的性别字段。虽然你可以在这个字段上建立索引,但由于区分度太低(只有两种可能),索引的效果可能并不明显。相比之下,身份证号或邮箱地址这样的字段区分度就很高,更适合建立索引。

4、字符串类型的字段,可以建立前缀索引

  • 例子:对于像URL这样很长的字符串字段,你可能不需要对整个字段建立索引。只对URL的前几个字符建立索引(即前缀索引)可能就足够了。

5、尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。

在这里插入图片描述

6、控制索引的数量

  • 索引就像厨房里的调料。适量的调料可以让食物更美味,但过多的调料会掩盖食物本身的味道。同样,过多的索引会降低数据库的性能。

7、如果索引列不能存储NULL值,请使用NOT NULL约束

  • 例子:假设你有一个记录员工电话号码的字段,并且这个字段上建立了索引。如果允许NULL值,那么当查询电话号码为NULL的员工时,索引可能无法有效工作。通过使用NOT NULL约束,你可以确保索引始终有效。

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

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

相关文章

怎么给视频活码加入时间设置?限时扫码看视频的制作方法

视频二维码是常见的一种二维码类型,很多人会通过这种方式来分享视频内容,可能某些情况下需要对制作的二维码图片加入扫码限制,比如有效期、填写密码、限制预览时间等设置,那么这些需求怎么在生成二维码时实现呢? 对于…

JAVA 用二分法查找数组中是否存在某个值

二分法查找的概念 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成…

软考67-上午题-【面向对象技术2-UML】-UML简介

一、UML简介 1-1、UML的定义 UML——统一建模语言。 能够表达软件设计中的动态、静态信息。 交互图:表达动态信息; 静态图:表达静态信息。 1-2、UML由3个要素构成: UML的基本构造块;(仅讨论此要素&…

spring-security 项目实战(一)个人健康档案

spring-security 项目实战(一)个人健康档案 项目说明项目地址框架信息 代码分析配置类解析默认登录页登录接口执行逻辑登录认证成功之后重定向到main页面过程未登录之前访问 /main生成默认登录页点击登录 登录之后访问 /main执行流程清空认证信息 项目来…

低空经济20人|卓翼智能任雪峰:以技术驱动市场,引领无人机细分领域创新

作为国内系留无人机领域的领头羊企业,卓翼智能致力于提供智能无人系统解决方案。本期“低空经济20人”请到卓翼智能CEO任雪峰分享他对系留无人机研发应用的经验以及未来无人机行业生态发展的观点。 如今,无人机的应用场景逐渐广泛,在社会发展…

python的http服务的使用

在Python中,你可以使用内置的 http.server 模块来创建一个简单的HTTP服务器。这个模块提供了一个轻量级的HTTP服务器,适用于开发和调试。以下是一个简单的例子: # Python 3.x from http.server import SimpleHTTPRequestHandler from sockets…

18个惊艳的可视化大屏(第20辑):物联网场景

实时监控和管理 物联网系统通常涉及大量的传感器、设备和数据,通过将这些数据可视化展示在大屏上,可以实时监控和管理物联网系统的运行状态。这有助于及时发现问题、快速响应,并提高系统的可靠性和稳定性。 数据分析和决策支持 可视化大屏可…

软件测试--性能测试实战篇

软件测试--性能测试实战篇 项目介绍和部署1. 轻商城项目介绍1.1 背景1.2 简介2. 项目功能架构3. 项目技术架构4. 熟悉数据库设计5. 轻商城项目搭建5.1 准备工作5.2 项目搭建步骤性能测试需求分析1. 性能测试需求分析1.1 如何获取有效的需求2. 性能测试点的提取2.1 性能测试点的…

frida常用检测点及其原理

文章转载于:https://bbs.kanxue.com/thread-278145.htm frida常见反调试 查看哪个so在检测frida function hook_dlopen() {Interceptor.attach(Module.findExportByName(null, "android_dlopen_ext"),{onEnter: function (args) {var pathptr args[0];i…

死锁的四个必要条件怎么理解

简单介绍 死锁是指在多线程或多进程的环境中,两个或多个进程或线程相互等待对方所持有的资源而无法继续执行的情况。死锁发生时,各个进程或线程都无法继续执行,系统处于僵持状态。 死锁发生的四个必要条件是: 互斥条件&#xff0…

第五十二回 戴宗二取公孙胜 李逵独劈罗真人-飞桨AI框架安装和使用示例

吴用说只有公孙胜可以破法术,于是宋江请戴宗和李逵去蓟州。两人听说公孙胜的师傅罗真人在九宫县二仙山讲经,于是到了二仙山,并在山下找到了公孙胜的家。 两人请公孙胜去帮助打高唐州,公孙胜说听师傅的。罗真人说出家人不管闲事&a…

SpringMVC 中的常用注解和用法

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:JavaEE 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 注解 1. MVC定义2. 注解2.1 RequestMappin…

leetcode:LCR 006. 两数之和 II - 输入有序数组(python3解法)

难度&#xff1a;简单 给定一个已按照 升序排列 的整数数组 numbers &#xff0c;请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 &#xff0c;所以答案数组应当满足 0 <…

牛客刷题|HJ24 合唱队,HJ25 数据分类处理 , HJ26 字符串排序

HJ24 合唱队 题目链接&#xff1a;合唱队_牛客题霸_牛客网 (nowcoder.com) 思路&#xff1a;对队列中每个元素分别找左边最长递增序列和右边最长递减序列&#xff08;都不一定是连续的&#xff09;&#xff0c;那么以当前元素为“山顶”可以保留的最大人数就是两者之和减一。…

el-dialog封装组件

父页面 <template><div><el-button type"primary" click"visible true">展示弹窗</el-button><!-- 弹窗组件 --><PlayVideo v-if"visible" :visible.syncvisible /></div> </template><sc…

C语言数组进阶-数组名的理解和计算

在之前我们关于数组的内容中&#xff0c;我们已经提出了关于数组名的理解 一般情况下&#xff0c;数组名是数组首元素的地址&#xff0c;但有两个例外&#xff1a; 1.sizeof(数组名)是计算整个数组的大小 2.&数组名是取出的整个数组的地址 sizeof不管后面是啥&#xff0c;只…

谷粒学院--在线教育实战项目【一】

谷粒学院--在线教育实战项目【一】 一、项目概述1.1.项目来源1.2.功能简介1.3.技术架构 二、Mybatis-Plus概述2.1.简介2.2.特性 三、Mybatis-Plus入门3.1.创建数据库3.2.创建 User 表3.3.初始化一个SpringBoot工程3.4.在Pom文件中引入SpringBoot和Mybatis-Plus相关依赖3.5.第一…

融资项目——OpenFeign的降级与熔断

当一个微服务调用其他微服务时&#xff0c;如果被调用的微服务因各种原因无法在规定时间内提供服务&#xff0c;则可以直接使用本地的服务作为备选&#xff0c;即进行降级熔断。 如之前所提到的微服务为例&#xff1a; 如果希望实现降级熔断&#xff0c;可以在本地创建一个实现…

探索vue框架的世界: 内部、外部样式和内联样式动态绑定的方法

在实际项目中&#xff0c;经常会遇到这样的场景&#xff0c;可以通过逻辑层中设定的变量&#xff0c;在视图层中来呈现不同的样式&#xff0c;那么这种动态绑定样式的方式如何实现呢&#xff1f; 本篇文章&#xff0c;博主将和大家分享动态绑定内联样式style 和 动态绑定内部和…

AI改变游戏规则:内容创作的新时代!

AI技术&#xff0c;尤其是人工智能&#xff08;AI&#xff09;在内容创作领域的应用&#xff0c;正开启了一个全新的时代。这一时代的核心在于利用AI的能力&#xff0c;不仅提高内容创作的效率&#xff0c;还能引入前所未有的创新元素&#xff0c;从而彻底改变游戏规则。 AI在…