mysql 查询优化 、索引失效

news2024/10/6 8:25:18

查询优化

物理查询优化

通过索引和表连接方式等技术来进行优化,这里重点需要掌握索引的使用

逻辑查询优化

通过SQL 等价变换 提升查询效率,直白一点就是说,换一种查询写法执行效率可能更高

索引失效

  1. 计算、函数、类型转换(自动或手动)导致索引失效

select sql_no_cache * from student where left(sutdent_name,3)=‘abc’ type: all
优化
select sql_no_cache * from student where student_name like ‘abc%’ tyoe: range

假设student_name 数据类型 varchar(5),且student_name 有普通索引
select sql_no_cache * from student where student_name =123 type:all
优化
select sql_no_cache * from student where student_name =‘123’ type:index

create index idx_sno on student(stuno);
select sql_no_cache * from student where stuno+1=2023008; type:all
优化
select sql_no_cahe * from student where stuno=2023007 type: index

联合索引(复合索引)
对于多列索引,过滤条件要使用索引必须按照索引建立的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。
如果查询条件中没有使用这些字段中第一个字段时,多列(联合)索引不会被使用。

范围条件右边的列索引失效
create index idx_age_classId_name on student(age,classId,name);
select sql_no_cache * from student where student.age=30 and student.classId>20 and student.name=‘abc’; ## name 索引就失效了
应用开发中范围查询,例如 金额查询、日期查询往往都是范围查询。应将查询条件放置where 语句最后(创建的联合索引中,务必把访问涉及到的字段写在最后) sql 语句中where 顺序 并不影响mysql 优化策略的。 联合索引的顺序影响的。

is null 可以使用索引 is not null 不能使用索引
not like 页不能使用索引,导致全部扫描
<>,!= 不等于 不能使用索引
like % 开头 索引失效 stuname like ‘%123’ , 不建议 左模糊,全模糊
OR 前后存在非索引的列,索引失效
最后在设计数据表的时候将字段设置为 not null 约束,
比如你可以将int 类型的字段,默认值设置为0.
将字符类型的默认值设置为空字符串(‘’)

总结

index(a,b,c)
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Springboot 实践(12)RabbitMq server 安装调试(Windows环境)

一、准备安装文件 1、下载Erlang 登录网站Downloads - Erlang/OTP&#xff0c;选择“Download Windows installer”&#xff0c;如下图所示&#xff1a; 弹出框中&#xff0c;选在下载保存地址&#xff0c;保存文件&#xff0c;如下图所示&#xff1a; 2、下载RabbitMQ 登录…

Redis 介绍、安装、Redis客户端

目录 redis是什么&#xff0c;他的应用场景是什么&#xff1f; Redis的一些主要特点和应用场景&#xff1a; redis的官方网站&#xff1a;Redis redis是键值型数据库&#xff1a;&#xff08;也就是key-value模式&#xff09;&#xff08;跟python的字典很像&#xff09; …

利用GitHub实现域名跳转

利用GitHub实现域名跳转 一、注册一个 github账号 你需要注册一个 github账号,最好取一个有意义的名字&#xff0c;比如姓名全拼&#xff0c;昵称全拼&#xff0c;如果被占用&#xff0c;可以加上有意义的数字. 本文中假设用户名为 UNIT-wuji(也是我的博客名) 地址: https:/…

Android Studio中创建java项目

1.创建普通的android工程 2.创建一个module 3.module类型选择java library 4.填写libary和class的名字 5.生成的工程如图所示 6.然后点击Run --- Edit Configurations... 选择Application选项 设置所需要的参数 选中myjavalib后点击OK。然后打开刚创建的lib的gradle 编辑gradl…

冯诺依曼体系结构/什么是OS?

一、体系结构图 示意图 控制器可以控制其它4个硬件&#xff0c;四个硬件直接可以进行数据传输。 5大硬件 但是这些个体需要用“线”连接。 为什么要有存储器&#xff1f; 如果没有&#xff0c;实际速度则为输入、输出设备的速度。 加上后&#xff0c;变为内存的速度。&#…

java IO流(二) 字符流 缓冲流

字符流 前面学习的字节流虽然可以读取文件中的字节数据&#xff0c;但是如果文件中有中文&#xff0c;使用字节流来读取&#xff0c;就有可能读到半个汉字的情况&#xff0c;这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码&#xff0c;但是如果文件过大又不太合适。…

Docker常用命令以及详解

Docker常用命令以及详解 一、基础命令&#xff1a; docker version 功能&#xff1a;显示 docker 客户端和服务器的版本信息。docker info 功能&#xff1a;显示 docker 系统的详细信息docker --help 功能&#xff1a;显示 Docker 命令的帮助信息。示例输出&#xff1a;这个…

聚焦!智慧燃气使用体验到底怎么样?

文章来源&#xff1a;网络 关键词&#xff1a;智慧燃气、智能管网、智能气网、智慧燃气系统、智慧燃气平台 随着科技的发展&#xff0c;物联网技术不断进步&#xff0c;智能燃气也时常出现在我们的生活中。但大多数人仍然对智慧燃气知之甚少。究竟何为智慧燃气&#xff1f;能…

无涯教程-JavaScript - DVAR函数

描述 DVAR函数使用与指定条件相匹配的列表或数据库的列中的数字,根据样本估算总体的方差。 语法 DVAR (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的行是记录,数据的列是…

Kruise Rollout:基于 Lua 脚本的可扩展流量调度方案

作者&#xff1a;潘梦源 前言 Kruise Rollout [ 1] 是 OpenKruise 社区开源的渐进式交付框架。Kruise Rollout 支持配合流量和实例灰度的金丝雀发布、蓝绿发布、A/B Testing 发布&#xff0c;以及发布过程能够基于 Prometheus Metrics 指标自动化分批与暂停&#xff0c;并提供…

【B树 B+树】B树、B+树理论

目录 引入B树B树定义和性质m阶B树核心特性 B树B树的查找 引入B树 满足上面两个策略就是B树&#xff1a; m 叉查找树中&#xff0c;规定除了根节点外&#xff0c;任何结点至少有 ⌈ m / 2 ⌉ \lceil m/2 \rceil ⌈m/2⌉ 个分叉&#xff0c;即至少含有 ⌈ m / 2 ⌉ \lceil m/2 \…

【Linux网络编程】环境配置篇

由于博主本学期所使用的Linux系统为Ubuntu&#xff0c;所以这篇博客会先以安装虚拟机和Ubuntu开始。 虚拟机的话&#xff0c;可以选择VMware&#xff0c;也可以选择VirtualBox。直接选择安装就行&#xff0c;这个应该是没有什么问题的。但是&#xff0c;如果之前电脑安装过Vmwa…

器件介绍TPS25821DSSR、TPS65994ADRSLR USB Type-C接口IC,TPS65982DMCZBHR坞站管理控制器

一、TPS25821 USB Type-C™ 电源控制器和 1.5A 电源开关 概述&#xff1a;TPS25820/21 是一款 USB Type-C 电源控制器&#xff0c;集成了一个额定电流为 1.5A 的 USB 电源开关。TPS25820/21 通过监测 Type-C 配置通道 (CC) 线路来确定 USB 接收装置是否连接。如果连接了接收装…

python基础运用例子

python基础运用例子 1、⼀⾏代码交换 a , b &#xff1a;a, b b, a2、⼀⾏代码反转列表 l[::-1]3、合并两个字典 res {**dict1, **dict2}**操作符合并两个字典for循环合并dict(a, **b) 的方式dict(a.items() b.items()) 的方式dict.update(other_dict) 的方式 4、⼀⾏代码列…

使用Pyspider进行API接口抓取和数据采集

API接口是一种常见的数据获取方式&#xff0c;它可以提供文本格式的数据&#xff0c;并且具有高度的实时性和可靠性。而Pyspider是一个基于Python的强大的网络爬虫框架&#xff0c;它提供了丰富的功能和灵活的扩展性&#xff0c;使我们可以轻松地进行数据的抓取和处理。在我们的…

深度学习环境搭建笔记(二):mmdetection-CPU安装和训练

文章目录 第一步&#xff1a;安装anaconda第二步&#xff1a;安装虚拟环境第三步&#xff1a;安装torch和torchvision第四步: 安装mmcv-full第五步: 安装mmdetection第六步&#xff1a;测试环境第七步&#xff1a;训练-目标检测7.1 准备数据集7.2 检查数据集7.3 训练网络 第一步…

数据库-多表查询

概述&#xff1a; 介绍&#xff1a;多表查询&#xff1a;指从多张表中查询数据 笛卡儿积&#xff1a;笛卡儿积是指在数学中&#xff0c;两个集合&#xff08;A集合和B集合&#xff09;的所有组合情况&#xff08;在多表查询时&#xff0c;需要消除无效的笛卡儿积&#xff09; 分…

7. read_excel()函数读取Excel文件

【目录】 文章目录 1. pandas库读取数据2. read_excel()函数读取Excel文件3. 准备工作4. 路径前的r是什么5. io参数 绝对路径6. io 相对路径7. sheet_name&#xff1a;要读取的sheet的名称或索引7.1 sheet_name参数 名字7.2 sheet_name参数 顺序 8. index_col参数指定行索引…

[译]这8个CSS小技巧,你知道吗?

前言 在网页设计和前端开发中&#xff0c;CSS属性是非常重要的一部分。掌握常用的CSS属性不仅可以使你的网页看起来更美观&#xff0c;还能提升用户体验&#xff0c;今天小编为大家介绍8个常见的CSS小技巧&#xff1a; 1.修改滚动条样式 下图是我们常见的滚动条&#xff0c;…

开发前期准备工作

开发前期准备工作 文章目录 开发前期准备工作0 代码规范0.1 强制0.2 推荐0.3 参考dao&#xff1a;跟数据库打交道service&#xff1a;业务层&#xff0c;人类思维解决controller&#xff1a;抽象化 0.4 注释规范0.5 日志规范0.6 专有名词0.7 控制层统一异常统一结构体控制层提示…