SQL索引优化

自己学习日志

索引优化

  • 为搜索字段、排序字段、select查询列,创建合适的索引,不过要考虑数据的业务厂家:查询多还是增删多

  • 尽量建立组合索引并注意组合索引的创建顺序,按照顺序组织查询条件,尽量将筛选颗粒度大的条件放最左边

  • 尽量使用覆盖索引,select 语句中尽量不要使用 *

  • order by 、group by 尽量要使用到索引

  • 索引的长度尽量短,短索引可以节省索引空间,使得内存中可以装在更多的键值索引,太长的列可以选择建立前缀索引

  • 索引更新不能太频繁,更新太频繁的数据不适合创建索引,因为维护索引的成本很大

  • order by 的索引生效,order by排序应该遵循最佳左前缀查询,如果是使用多个索引字段进行排序,那么排序的规则必然相同(同什同降),否则索引同样会失效

  • 尽量避免索引失效,比如不正确的模糊查询,组合索引使用不遵循规则,or关键字,子查询建临时表耗费性能等

LIMIT优化

  • 如果预计select命中的结果只有一条,那么可以使用limit 1 可以停止全表扫描

  • 处理分页会使用limit,当翻页到非常靠后的页面是,偏移量会非常大,这是limit的效率会非常低,

  • limit offset size:其实就是offset的问题,导致MySQL扫描大量不需要的行然后抛弃掉

  • 解决方案:

    • 单表分页时,使用自增主键排序,先使用where id > offset limit后面只写rows

    • select * from (select * from test where id > 1000000 and id < 1000500 order by id) t limit 0,20;

其他查询优化

  • 小表驱动大表,比如使用left jion时,因为使用join的话,第一张表是必须全变扫描的,所以如果一少关联多久可以减少扫描次数

  • 避免全表扫描,MySQL在使用不等于 != 或 <> 的时候是无法使用索引的会导致全表扫描

  • 避免MySQL放弃索引查询

    • 特殊情况,当数据量少(几万)的时候,全表扫描会比使用索引快,则可以不使用索引

  • 尽量不要使用count(*),而是使用count(主键)

    • count(*):遍历所有的行、列,查询行数

    • count(列):查询指定列不为null的行数,只查询了指定列

  • join两张表的关联字段最好都建立索引

    • select * from user u left join order o on u.id = o.user_id;

  • where条件中尽量不要使用not in 语句,建议使用not exists

  • 合理使用慢查询日志,explain执行计划查询。show profile查询SQL执行时的资源使用情况

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

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

相关文章

凌风 TEMU工具箱 抢仓 库存销售数据利润计算 选品监控采集上品 一网打尽

凌风TEMU工具箱介绍 一、安装教程1、下载方式2、环境准备3、安装步骤3.1、插件安装3.2、客户端安装 4、启动软件 二、使用教程一&#xff1a;登录注册激活方法2.1 注册登录2.2 激活方式 &#xff08;激活码激活&#xff09;2.3 绑定店铺 二&#xff1a;使用方法&#xff1a;功能…

Android Gradle开发与应用 (四) : Gradle构建与生命周期

1. 前言 前几篇文章&#xff0c;我们对Gradle中的基本知识&#xff0c;包括Gradle项目结构、Gradle Wrapper、GradleUserHome、Groovy基础语法、Groovy语法概念、Groovy闭包等知识点&#xff0c;这篇文章我们接着来介绍Gradle构建过程中的知识点。 2. Project : Gradle中构建…

揭秘大气颗粒物与VOCs:PMF源解析技术全解析

在现今日益严峻的环境问题中&#xff0c;大气颗粒物和臭氧污染尤为突出&#xff0c;它们不仅深刻影响着全球气候和生态环境&#xff0c;更对人体健康构成了严重威胁。为了有效应对这一挑战&#xff0c;我们首先需要深入了解颗粒物和臭氧的来源&#xff0c;特别是臭氧的前体物之…

遥测终端助力城市内涝积水监测,守护城市生命线!

近年来&#xff0c;随着全球气候的变化和城市化进程的加速&#xff0c;强降雨事件频发&#xff0c;导致城市内涝问题日益严重。道路低洼处、下穿式立交桥和隧道在强降雨时常常产生大量积水&#xff0c;给人们的出行带来极大不便&#xff0c;严重时甚至威胁人民的生命安全和造成…

Unity 学习笔记索引

Unity安装与简单设置 Unity 常用操作与素材网站 Unity 脚本-生命周期常用函数 Unity 预制体与变体 Unity 使用脚本获取组件&#xff0c;代码生成预制体 Unity 向量计算、欧拉角与四元数转换、输出文本、告警、错误、修改时间、定时器、路径、 Unity 切换场景-&#xff08;同步与…

JVM运行时数据区——方法区

文章目录 1、栈、堆、方法区的交互关系2、方法区的理解2.1、方法区的官方描述2.2、方法区的基本理解2.3、JDK中方法区的变化 3、设置方法区大小与OOM3.1、设置方法区内存的大小3.2、方法区内存溢出 4、方法区的内部结构4.1、类型信息、域信息和方法信息介绍4.1.1、类型信息4.1.…

Spring Cloud原理详解

Spring Cloud 是基于 Spring Boot 的微服务架构开发工具包&#xff0c;旨在帮助开发人员快速构建分布式系统中的一些常见模式&#xff0c;例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、领导选举、分布式会话和集群状态。Spring Cloud 是 Spring 生态系…

用户和用户组管理及密码管理

用户&#xff1a; useradd 新建用户 useradd 用户名称 useradd -g 组名称 用户名称 userdel 删除用户 passwd 修改用户密码 usermod 修改用户属性 usermod [选项] 用户名 chage 修改用户属性 chage [选项…

动手学深度学习—循环神经网络RNN详解

循环神经网络 循环神经网络的步骤&#xff1a; 处理数据 将数据按照批量大小和时间步数进行处理&#xff0c;最后得到迭代器&#xff0c;即每一个迭代的大小是批量大小时间步数&#xff0c;迭代次数根据整个数据的大小决定&#xff0c;最后得出处理的数据&#xff08;参照第三…

极狐GitLab Runner 添加 极狐GitLab 域名 host

本文作者 徐晓伟 自定义 GitLab 域名解析 查看极狐 GitLab runner 日志 查看极狐 GitLab Runner Pod 名称 [rootanolis-7-9 ~]# kubectl -n gitlab-test get pod | grep gitlab-runner my-gitlab-gitlab-runner-6fb4bf7468-nmnkp 0/1 Running 29 (62s ago…

【嵌入式——QT】QDockWidget

QDockWidget提供了dock widget的概念&#xff0c;也称为工具面板或实用窗口。Dock窗口是放置在QMainWindow中围绕中心窗口组件的Dock窗口组件区域中的次要窗口&#xff0c;QDockWidget是可以在QMainWindow窗口停靠&#xff0c;或在桌面最上层浮动的界面组件。 停靠窗口可以被移…

重拾前端基础知识:JavaScript

重拾前端基础知识&#xff1a;JavaScript 前言使用JavaScript输出语法运算符条件语句循环数据类型字符串数字数组对象日期函数 数学正则表达式异常处理类集合模块JSON闭包异步调试DOM&#xff08;文档对象模型&#xff09;事件事件监听器表单 BOM&#xff08;浏览器对象模型&am…

【排序】详解选择排序

一、思想 选择排序的原理与思想非常直观和简单&#xff0c;它通过不断地选择未排序部分的最小&#xff08;或最大&#xff09;元素&#xff0c;并将其放到已排序部分的末尾来实现排序。 具体来说&#xff0c;选择排序的过程可以分解为以下几个步骤&#xff1a; 寻找最小&…

三步骤找到用户真正痛点 提高需求分析质量

用户痛点对于需求分析具有至关重要的作用&#xff0c;这直接关系着需求分析结果是否真正满足用户需求&#xff0c;关系着最终研发的产品是否能够满足市场的需求&#xff0c;是否能够在竞争激烈的市场中脱颖而出。因此找到用户真正痛点至关重要。 1、什么是痛点 痛点是消费者心理…

DML相关操作

DML 是数据操作语言&#xff0c;用来对数据库中表的数据记录进行增删改操作 添加数据&#xff08;insert&#xff09;修改数据&#xff08;update&#xff09;删除数据&#xff08;delete&#xff09; DML-添加数据 1.给指定字段添加数据 insert into 表名&#xff08;字段…

关于用强化学习进行股市预测的新思路(2)

据上次新模型开始正式使用以来&#xff0c;发现了几个问题。 1. 因为是一个转债对应一个模型&#xff0c;导致每次预测结果很少。 2. 预测出来的结果&#xff0c;大部分还是受大盘影响。不过大部分最终还是会回本盈利&#xff0c;时间长短的问题。 3. 需要经常更新模型&#x…

各中间件性能、优缺点对比

参考资料&#xff1a; Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点&#xff1f;

C++命名空间

在C/C中&#xff0c;变量&#xff0c;函数和和类这些名称都存在于全局作用域中&#xff0c;可能会导致很多冲突&#xff0c;使用命名空间的目的是对标识符的名称进行本地化&#xff0c;避免命名冲突或名字污染&#xff0c;namespace关键字就是解决这种问题的。如下程序并无问题…

文物保护平台数据统计分析及预警-子系统专题分析

文物预防性监测与调控系统的监测统计分析子系统提供全面的文物状态及环境数据分析,为博物馆工作人员进行基于文物材质特性的专项保护提供相关科研辅助。主要的监测分析,包括各展厅文物统计分析、不同环境因素报表统计、以及监测调控设备统计分析等。 系统用户和文物管理人员可以…

从0开始入门智能知识库和星火大模型,打造AI客服。

介绍FastWiki FastWiki是一个高性能、基于最新技术栈的知识库系统&#xff0c;旨在为大规模信息检索和智能搜索提供解决方案。它采用微软Semantic Kernel进行深度学习和自然语言处理&#xff0c;在后端使用MasaFramework&#xff0c;前端采用MasaBlazor框架&#xff0c;实现了…