热门搜索: win10 小米手机 拼多多
首页 > 互联网 > sql调优的几种方式

sql调优的几种方式

2022-12-05 14:27 来源:网友投稿 浏览:1000
导读:sql调优的几种方式:避免使用select *、用union all 代替union、小表驱动大表、批量操作、多用limit、in中值太多、增量查询、高效的分页、用链接查询代替子查询、join数量不宜过多、join时需要注意、控制索引的数量、选择合理的字段类型、提升group by的效率、索引优化。

sql调优的几种方式:避免使用select *、用union all 代替union、小表驱动大表、批量操作、多用limit、in中值太多、增量查询、高效的分页、用链接查询代替子查询、join数量不宜过多、join时需要注意、控制索引的数量、选择合理的字段类型、提升group by的效率、索引优化。

select *会查询所以字段,实际业务场景中不需要所有的字段,可以不进行查询。

union会排重,排重过程需要遍历,排序,比较,更消耗cpu资源。在确定唯一,没有重复数据的情况下,尽量用用union all。

in 的话里面驱动外面,in适合里子查询是小表
exist 的话外面驱动里面,适合外面是小表

当然一次插入量也不能太大,可以分批插入。

在不需要获取全部记录的情况下,使用limit获取指定数量。

查询出来数量太大,限制一次最大查询条数

还可以,多线程查询,最后把查询出来的数据汇总。

查询比上次id 大的100条

mysql会查询10020条,然后丢弃前面10000条,这个比较浪费资源

可以优化:

找到上次分页最大id
假如id是连续的,并且有序,可以用between
注意: between要在唯一索引上分页,不然会出现每页大小不一致问题。

MySQL如果需要在两张以上表中查询数据的话,一般有两种实现方式
子查询
连接查询

子查询可以通过in实现,优点:这样简单,
但缺点是,MySQL执行子查询时,需要创建临时表,查询完成后再删除临时表,有一些额外开销。
可以改成连接查询:

join表不宜超过3个,如果join太多,MySQL在选择索引时会非常复杂,很容易选错索引。
并且没有命中,nested loop join 就会分别从两个表读一行数据进行对比,时间复杂度n^2。

join用的最多的时left join 和 inner join
left join:两个表的交集和左表的剩余数据
inner join:两个表的交集

inner join mysql会自动选择小表驱动,
left join 左边的表驱动右边的表

索引不是越多越好,索引需要额外的存储空间,B+树保存索引,额外的性能消耗。
单表索引数量尽量控制在5个以内,且单个索引字段数量控制在5个以内。

能用数字类型就不用字符串,字符串处理速度比数字类型慢

主要功能去重,分组
先过滤数据,减少数据,再分组

这种写法就不好,建议以下写法:

强制走哪个索引

声明:时财网仅提供信息发布平台,如若内容有误或侵权请通过反馈通道提交信息,我们将按照规定及时处理。

热门推荐

  • VB是Visual Basic的缩写,本身就是一种编程语言。是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。 更多
    --2022-12-05
  • ajax需要设置的以下两个配置为:processData: false, contentType: false。 更多
    --2022-12-05
  • android是机器人的意思,音译中文名称叫做安卓。android(安卓)通常是指手机操作系统,在目前市场上,由于它的开源性,所以很多手机厂商研发手机时搭载Android操作系统,比如华为手机的EMUI是基于Android,还有小米、OPPO、魅族等大部分手机品牌都是使用Android。 更多
    --2022-12-05
  • Python自学攻略:通过购买相关书籍、网课视频教程进行学习,同时需要跟着教程一起实操,练习固定知识点。教程中无法解决的疑问,可以网上查找相关资料或请教他人,多学多练多思考,自学的过程可能会比较容易走弯路,但是可以磨练一个人的耐心和独立思考能力。 更多
    --2022-12-05
  • alert()的功能是弹出对话框并显示其中的内容,可以是显示一个警告对话框、提示对话框等用法。 更多
    --2022-12-05
  • SPSS(Statistical Product and Service Solutions),中文名称:统计产品与服务解决方案。它是集数据录入、资料编辑、数据管理、统计分析、报表制作、图形绘制为一体,也包括近期发展的多元统计技术,如多元回归分析、聚类分析、判别分析、主成分分析和因子分析等方法。目前已经广泛地应用于农业、工业、商业、医学、交通运输、社会学、市场分析、股市行情、旅游业等多个领域与行业。 更多
    --2022-12-05
  • 手机鸿蒙系统有以下优势:1、智能终端全场景分布式操作系统,不止是手机可用。2、独立研发微内核,系统开发可操作性更多。3、对国人来说,是引以为傲的操作系统,国货之光。 更多
    --2022-12-05
  • 鸿蒙系统升级计划中的q4是表示10月-12月,也就是第4季度,q源于季度的英文单词quarter。 更多
    --2022-12-05
  • access数据库中表的组成是字段和记录。在表中将数据以行和列的形式保存,表中的列称为字段,字段是Access信息的最基本载体,说明一条信息在某一方面的属性;表中的行称为记录,记录是由一个或多个字段组成的,一条记录就是一个完整的信息。 更多
    --2022-12-05
  • 通过DROP TABLE 语句可以删除sql表,假如需要删除名为table_name的表,具体删除操作步骤如下: 更多
    --2022-12-05

热门标签  给您最快捷的浏览方式!

  • 数据库由什么来管理

    数据库由DBA来管理,DBA(Database Administrator)是指数据库管理员,是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称。

    2022-12-05
  • 数据库索引的作用

    数据库索引的作用是通过索引可快速访问数据库表中的特定信息,可加快对表中记录的查找或排序操作,从而实现提升程序在数据库的查询效率。在数据库十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。

    2022-12-05
  • 重启Linux服务器命令

    重启Linux服务器命令有以下几种:reboot :推荐常用重启命令。shutdown -r now:立即重启。init 6:切换运行级别到6,6表示重启。halt:先关机,需按开机键开机。poweroff:先关机,需再按开机键开机。

    2022-12-05
  • 对象存储和文件存储的区别

    对象存储是键值存储,无目录层次结构和无数据格式限制,可存储任意数量的数据,存储桶空间无容量上限,无需分区管理。文件存储是文件夹式存储,使用常用的网络文件传输协议,可创建文件系统并实现大规模扩展,需挂载在云服务器中使用。

    2022-12-05
  • c语言属于什么的语言

    C语言属于电脑编程语言中的高级语言。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。

    2022-12-05
你已经赞过了