mysql优化查询

  1. sql语句的优化
    1. 避免使用通配符,特别是在where子句的开始部分
    2. 避免在where子句中使用不必要的条件
    3. 考虑将多个单个查询语句合并为一个复合查询语句,以减少数据库的访问次数
    4. 使用explain语句分析查询语句的执行计划,找出潜在的性能瓶颈
    5. 避免使用select * ,只选择需要的字段,以减少数据传输和处理的时间
    6. 避免在where子句中使用函数或表达式,这可能会导致索引失效
    7. 使用union all代替union,因为union all不需要进行结果集的去重操作
    8. 优化数据索引结构,查询语句能尽可能的去命中索引
  2. mysql索引
    1. 索引能够显著提高查询速度,但也可能带来额外的存储和维护开销
    2. 索引的基本概念
      1. 索引是一种数据结构,他可以帮助数据库系统快速访问数据表中的特定数据
    3. 索引的作用
      1. 加速查询:索引能够显著减少数据库系统需要扫描的数据量,从而加快查询速度
      2. 支持排序和分组:通过使用索引,数据库可以更快地执行排序和分组操作,因为索引已经对数据进行了排序
      3. 保证数据的唯一性:通过创建唯一索引,可以确保表中每一行数据的某列或多列组合是唯一的
    4. 索引的类型
      1. 主键索引(primary key):数据表只能包含一个主键索引,且不允许有空值(null),在innodb存储引擎中,主键索引也被称为聚簇索引,表中的数据行实际上是按照主键索引的顺序存储的
      2. 唯一索引(unique):与主键索引类似,唯一索引也要求索引列的值是唯一的,但允许有空值(null)
      3. 普通索引(index):最基本的索引类型,没有任何限制
      4. 全文索引(fulltext):用于全文索引,只有myisam和innodb存储引擎支持全文索引
      5. 空间索引(spatial):用于地理空间数据类型,只有myisam存储引擎支持空间索引
      6. 前缀索引:只索引列值的前缀字符
      7. 复合索引:在表的多个列上创建索引
  3. 索引为什么这么快
    1. 减少数据扫描量
      1. 索引是一种数据结构(B+树),他允许数据库系统根据索引值直接定位导数据表中的特定位置,而无需扫描全表
      2. 在没有索引的情况下,数据库必须扫描整个表来查找匹配的行,这在大型表中是非常耗时的
    2. 降低IO操作
      1. 索引通常按照特定的数据结构存储,这种结构可以显著减少磁盘IO操作的次数
      2. 由于索引的大小通常远小于表本身,所以读取索引所需的IO操作也比较少
      3. 通过减少IO操作,索引能够显著提高查询的响应时间
    3. 优化排序和分组
      1. 索引本身已经对数据进行了排序,因此在执行排序和分组操作时,数据库可以利用索引来加速这些操作
      2. 这意味着,如果查询中包含排序或分组操作,并且这些操作涉及到的列已经被索引,那么查询性能将会得到显著提高
    4. 提高数据检索效率
      1. 索引使得数据库能够快速定位到需要的数据行,从而提高了数据检索的效率
      2. 特别是大型表中,使用索引可以显著减少查询的响应时间
    5. 降低查询的复杂度
      1. 索引可以显著降低查询的时间复杂度,例如,在没有索引的情况下,查找一个特定的行可能需要O(n)的时间复杂度(其中n是表中的行数),而使用索引可以将时间复杂度降低到O(log n)
    6. 所以mysql使用索引能够显著提高查询速度,主要是通过减少数据扫描量,降低IO操作,优化排序分组,提高数据检索效率,支持唯一性约束,利用局部性原理和磁盘预读以及降低查询复杂度来实现的,这些优化措施使得数据库系统能够更高效地处理查询请求,从而提高整体的性能
  4. 优化表结构
    1. 合理设计数据库结构,合理划分表和建立索引
    2. 选择合适的数据类型,如使用整型代替字符串存储数字数据,以减少数据库存储空间并提高查询和更新的性能
    3. 避免数据表的连接,特别是多表连接操作,可以通过使用冗余字段或者嵌套查询的方式来减少连接操作
    4. 考虑使用分区表技术,将数据分散到多个表中以提高查询性能
  5. 定期维护数据库
    1. 删除不再使用的索引,避免索引过多或不当使用而影响性能
    2. 重新组织表,优化表的物理存储结构
    3. 清理日志文件等操作,保持数据库的健康状态
    4. 定期优化和重建索引,随着数据的更新和增长,索引可能会变得不再紧凑,定期优化和重建索引可以保持索引性能

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

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

相关文章

九、浏览器事件机制

上一篇👉: 浏览器同源策略 目录 浏览器事件机制1.事件概念及模型事件模型 2.事件冒泡3.事件委托(1)事件委托的概念(2)事件委托的特点(3)局限性(4)优化建议使用场景示例 …

嫦娥六号成功带回月球背面土壤,嫦娥七号整装待发,2030年前实现载人登月!

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 嫦娥六号圆满成功 嫦娥六号任务是中国探月工程的一次重大成功,探测器于5月3日在中国文昌航天发射场发射升空并进入地月转移轨道。经…

Mini-Contract电子合同在线签署小程序源码

Mini-Contract电子合同在线签署小程序源码,采用的是uniapp Vue3框架搭建,只有前端源码是一个聚合市场上各类电子合同解决方案商的工具,让用户无需一个个对接电子合同厂商,节省时间和精力。该程序提供了简洁的代码和最新的技术栈&a…

隐私计算实训营第二期第12基于隐语的VisionTransformer框架

01 MPCViT:安全且高效的MPC友好型 Vision Transformer架构 总体框架: 首先分析了ViT产生较大延时的原因,思考能否去除这些操作。 然后,对比不同的注意力机制,发现它们中有的具有很好的效率,有的则具有很…

gin会话控制

一. 会话控制 1.1 介绍 HTTP是无状态的协议,不会记录用户的任何信息,服务器也不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否是同一个客户端发出的。Cookie是解决HTTP协议无状态的方案之一Cookie实际就是服务器保存在浏览器上…

2010-2022年 政府透明度指数报告整理

政府透明度指数报告是衡量政府透明度的重要工具,它由独立的评估机构或研究机构发布,用以反映政府在不同方面的表现。以下是对政府透明度指数报告的详细介绍: 数据简介 定义:政府透明度指数报告衡量的是政府在信息公开、政策制定…

Linux——/etc/passwd文件含义,grep,cut

/etc/passwd文件含义 作用 - 记录用户账户信息:共分为7段,使用冒号分割 含义 - 文件内容意义:账户名:密码代号x:UID:GID:注释:家目录:SHELL - 第7列/sbin/nologin&#x…

无人机赋能自然资源调查

确权 业务挑战 由于测绘人员难以到达现场,确权区域大,传统人工测绘覆盖 不全面,信息不完整 传统测绘成果单一,现场核实难度高,确权采集信息不对称 无人机优势 数据采集效率是人工的10倍以上,可自动将…

分布式限流:Spring Cloud Gateway 限流

分布式限流:Spring Cloud Gateway 限流 在现代微服务架构中,流量控制是一个至关重要的部分。分布式限流作为一种有效的流量控制手段,能够帮助我们保护系统不被突发的流量冲垮。Spring Cloud Gateway支持多种限流方式。 什么是分布式限流 分…

vivado VIO IP核

参考:pg159 VIO:可以模拟输入/输出功能,实时监视和修改FPGA中的信号,用于调试和验证,与ILA相比,VIO无需占用RAM资源。 VIO IP的输出对于FPGA内部逻辑是输入信号,可以在调试界面设置输入值&…

区块链开发入门:基础概念与实施技术详解

区块链开发入门:基础概念与实施技术详解 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 引言 随着区块链技术的快速发展,它已经不再局…

分享屏幕坐标和窗口通信

简介 实现功能&#xff0c;通过url传参选择扑克牌&#xff0c;桌面同时打开两个以上该窗口&#xff0c;扑克牌可以在窗口之间移动。 在线演示 屏幕坐标和窗口通信 实现代码 <!DOCTYPE html><html><head> <meta http-equiv"Content-Type" co…

华为od-C卷200分题目5 -项目排期

华为od-C卷200分题目5 -项目排期 题目描述 项目组共有N个开发人员&#xff0c;项目经理接到了M个独立的需求&#xff0c;每个需求的工作量不同&#xff0c;且每个需求只能由一个开发人员独立完成&#xff0c;不能多人合作。 假定各个需求之间无任何先后依赖关系&#xff0c;请…

使用DDR的MIG IP核,如何提高DDR的读写效率

要提高DDR MIG&#xff08;Memory Interface Generator&#xff09;的读写效率&#xff0c;有几种策略和技巧可以考虑&#xff1a; burst传输优化&#xff1a; 尽可能使用最大的burst长度。DDR3/DDR4通常支持8beat或8n beat的burst。更长的burst可以提高数据传输效率&#xff0…

IDLE-python windows官方安装包下载国内镜像下载地址汇总

此为IDLE-windows安装包,exe格式只能在windows x64系统下面使用 序号版本名称下载地址1IDLE-python-3.12.4-amd64.exe点我下载2IDLE-python-3.11.9-amd64.exe点我下载3IDLE-python-3.10.11-amd64.exe点我下载4IDLE-python-3.9.13-amd64.exe点我下载5IDLE-python-3.8.10-amd64.…

html--橙色火箭404维护

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>系统维护通知</title><link rel"stylesheet" type"text/css" href"css/notice.css"/> </head> <body><div cla…

代码随想录——柠檬水找零(Leetcode860)

题目链接 贪心 class Solution {public boolean lemonadeChange(int[] bills) {if(bills[0] 10 || bills[0] 20 || bills[1] 20){return false;}int count5 1;int count10 0;for(int i 1; i < bills.length; i){if(bills[i] 5){count5;}if(bills[i] 10){count10;…

解决Java中的ParseException异常的实用方法

解决Java中的ParseException异常的实用方法 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 了解ParseException异常 ParseException是Java中常见的异常之一&…

重温react-11(userMemo和useContext的使用方式)

userMemo import React, { useState, useMemo } from reactexport default function LearnFunction08() {const [num1] useState(0);const [num2, setNum2] useState(0);const [num3, setNum3] useState(0);const number useMemo(() > {console.log(调用了吗);return n…

51单片机第16步_点灯

本章重点学习软件延时和普通IO口输出。 1、delay.c如下&#xff1a; #include <intrins.h> //包含头文件intrins.h,要放在stdio.h的头文件之前; //使能函数如下: //1 _nop_(); 相当于汇编的NOP指令; //2 bit _testbit_( bit bit_value ); 对bit_value进行测试,若b…