首页 > 数据库 >sql优化篇

sql优化篇

时间:2023-07-13 14:57:26浏览次数:33  
标签:ref 使用 查询 索引 key sql 优化 主键

简单优化:

1、不要使用 select *,尽量避免回表查询

2、尽量避免 in语句

3、如果 like 语句前后模糊匹配导致索引失效,可以使用  SELECT * FROM table WHERE INSTR(name, 'keyword') > 0; 

4、其余字段加索引

5、limit时,尽量添加order by [索引字段],可以在大数据量时提高查询速度

6、order by,

 

查询计划解读:

id select_type table type possible_keys key key_len ref rows Extra
                   

id:一条多子句sql,子句的查询顺序,id越大优先级越高,越先执行

select_type:

  system只有一行记录会出现

  eq_ref索引字段能匹配到唯一的行,一般主键和唯一键的字段查询可以

  ref非唯一,与eq_ref相对

  range一定范围内的索引扫描,与index相对

  index全部范围的索引扫描

  ALL全表扫描,没走索引

possible_keys:你查询的字段可能设置了一些索引,但是where,order by等筛选条件不一定会使用这些索引

key:和possible_keys相对,就是你筛选条件实际使用的索引

key_len:这也是估算值,使用的索引长度(最大可能长度),查询并非是使用索引的全部长度

ref:

rows:这是大致估算的扫描行数

extra:一些比较重要的描述信息,使用到了索引会提示Using index

 

聚集索引(聚簇索引):叶子节点存储的是整行数据,主键索引就是聚集索引,

非聚集索引(普通索引、非聚簇索引、二级索引):其他的则不是,其他索引只存储索引列的数据以及主键索引

回表查询:使用非聚集索引时,为了取到具体数据,通过主键回到聚集索引里查数据,用执行计划可以看到两次查询

索引覆盖:为了减少或解决回表的一种操作,尽量在筛选条件中加上对主键的一些筛选或者排序操作,或者减少查询列,只查询添加了索引的列

 

 

标签:ref,使用,查询,索引,key,sql,优化,主键
From: https://www.cnblogs.com/benjerry/p/17550443.html

相关文章

  • psql学习笔记
    目录Q:命令行执行文件里面的语句Q:docker本地运行psqlQ:常用命令Q:windows启动命令Q:统计数据库或表的磁盘空间占用Q:查询psql中的表结构信息Q:命令行执行文件里面的语句psql-Ugalax-W"wei***@123"-ddb_name-p5432-fxxx.sqlQ:docker本地运行psql1、获取最新的postg......
  • Postgresql统计所有表的基本信息(如行数、大小等)
    pg_class目录pg_class记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见pg_index)、序列、视图、物化视图、组合类型和TOAST表。pg_class中的一些逻辑标志被以一种懒惰的方式维护:在正确状态时它们被保证为真,但是当条件不再为真时它们并不会被立刻重置为假。例如......
  • 如何实现rpm安装mysql的配置文件目录的具体操作步骤
    rpm安装mysql的配置文件目录MySQL是一个流行的关系型数据库管理系统,它提供了一种简单而高效的方式来管理和存储数据。在安装MySQL时,我们需要配置一些参数,以满足我们的需求。本文将介绍如何使用RPM包安装MySQL,并详细说明配置文件的目录和使用方法。RPM包安装MySQLRPM(Red......
  • Linux系统安装MySql服务器
    1、登录购买的云服务器,进入到根目录,如下图: 2、查看系统里是否有安装MySQL相关的程序包,有则需要先卸载,再重新安装,卸载过程文档后续补充,如需先卸载,可自行百度查找解决方案进行处理。查询是否安装命令:rpm-qa|grepmysql 如图,是已经安装的情况(如下截图的是redis,mysql同理)......
  • SQL Server 使用APPLY运算符
    从SQLServer2005开始,提供了APPLY运算符   附建表语句                   文章来源: 锋利的SQL(第2版)7.8使用APPLY运算符......
  • 如何实现查看mysql IO的具体操作步骤
    查看MySQLIO的流程在开发中,了解数据库的IO情况对于优化和性能调优非常重要。本文将指导你如何查看MySQL的IO情况,以帮助你更好地理解和优化数据库的性能。步骤概述下面是查看MySQLIO的流程概述。我将使用表格展示每个步骤和所需的代码。步骤描述步骤一连接到MySQL数......
  • 如何实现参考教材4.5.2,在Spark Shell中编写代码实现: 1、用SparkSQL 向Hive的表写入
    使用SparkSQL向Hive表写入数据的流程为了向Hive表写入数据,我们需要完成以下步骤:步骤描述1创建SparkSession2创建DataFrame3将DataFrame注册为表4写入数据到Hive表接下来,我们将逐步指导你完成这些步骤。步骤1:创建SparkSession首先,我们需要创建一个Spa......
  • 斜率优化
    斜率优化大致思想:将决策点视为若干二维平面上的点,将当前点的已知条件视为斜率,将\(dp_i\)视为截距。寻找经过某个点且斜率一定的直线的最小截距。(寻找最大截距时需要将\(dp\)取负,转化为最小,这样维护的凸包就始终是下凸包)凸包的维护:单调队列:满足条件:满足抉择点的\(x\)坐......
  • SQL窗口函数OVER详细用法
    #SQL窗口函数OVER详细用法OVER的定义:​OVER用于为行定义一个窗口,它对一组值进行操作,不需要使用GROUPBY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。OVER的语法OVER([PARTITIONBYcolumn][ORDERBYculumn])PARTITIONBY子句进行分组;......
  • PHP 生成数据库的 markdown 字段说明文档,支持 mysql,postgresql
    安装composerrequirepeng49/db2markdown命令行使用phpvendor/bin/db2markdown输入数据库的地址(host),端口(port)用户名,密码,要导出的表,默认是*,生成所有表的文档,指定多个表明用逗号隔开,如:table1,table2$phpsrc/bin/db2markdownpleaseenterthedb(1mys......