首页 > 数据库 >SQL执行顺序,优化的禁止项,建议项

SQL执行顺序,优化的禁止项,建议项

时间:2023-10-18 15:45:28浏览次数:36  
标签:语句 禁止 索引 顺序 SQL 执行 优化

SQL执行顺序,优化的禁止项建议项

SQL执行顺序如下:
1 .FROM,(-including JOIN )
2. WHERE
3. GROUP BY
4. HAVING
5. WINDOW functions
6. SELECT
7. DISTINCT
8. UNION
9. ORDER BY
10. LIMIT and OFFSET
·语句性能应注意两个方面:
1)数据流的流向;
2)order by limit场景。
从执行顺序上看,在SELECT之前的所有子语都是在做数据筛选,SELECT以后开始执行运算,用户应注意数据流的流
向。order by limit一般是在最后运行,如果在一开始运行,有时候会造成返回数据量过大,进而导致执行时间过长。

SQL的语句编写包含一些禁止项与建议项语句,用户深入了解与熟练掌握这些内容能够更好地开展业务。
1.禁止项
1)select *,返回无用数据,过多IO消耗,以及Schema 变更问题;
2)Insert语句指定具体字段名称,不要写成insert into t1 values(…),道理同上;
3)禁止不带WHERE,导致全表扫描以及误操作;
4)Where条件里等号左右字段类型必须一致,否则可能 会产生隐式转换,无法利用索引;
5)索引列不要使用函数或表达式,否则无法利用索引。
如where length(name)=‘Admin’或where user_id+2=5;
6)Replace into,会导致主备不一致;
7)业务语句中带有DDL操作,特别是Truncate。
2.建议项
1)减小三表以上Join;
2)用Union all 替代Union;
3)使用Join 替代子查询;
4)不要使用 like ‘%abc%’,可以使用 like ‘abc%’;
5)Order by /distinct /group by 都可以利用索引有序性;
6)减少使用event/存储过程,通过业务逻辑实现;
7)减小where in() 条件数据量;
8)减少过于复杂的查询和拼串写法。
禁止Null值
定义 id int primary key
统一字符集,建议UTF8mb4
统一排序规则

标签:语句,禁止,索引,顺序,SQL,执行,优化
From: https://www.cnblogs.com/chenshaojun2008/p/17772517.html

相关文章

  • MySQL 8.0.34 tar包安装踩坑记录
    环境概述操作系统:Centos7.9MySQL版本:8.0.34错误提示[[email protected]]#/soft/mysql/bin/mysqld--initialize--user=mysql--basedir=/soft/mysql--datadir=/soft/mysql/data/soft/mysql/bin/mysqld:/lib64/libstdc++.so.6:version`CXXABI_1.3.11'not......
  • 微信小程序分包体积优化建议
    代码包体积优化启动性能优化最直接的手段是降低代码包大小,代码包大小直接影响了下载耗时,影响用户启动小程序时的体验。开发者可以采取以下手段优化代码包体积:1.合理使用分包加载推荐所有小程序使用使用分包加载是优化小程序启动耗时效果最明显的手段。建议开发者按照功......
  • RTSP流媒体服务器EasyNVR视频云平台之视频观感体验的优化配置
    随着互联网基础设施建设的发展,4G/5G/NB-IoT等网络技术的广泛应用,视频监控需求越来越多,而传统监控行业和摄像机直播系统受到使用区域限制、实施成本高、入口门槛高等问题的困扰,无法有效利用优质云资源进行监控云平台的搭建。此时,EasyNVR产品应运而生,成为了解决以上痛点的完美方案......
  • 嵌入式系统中的低功耗定时器应用与优化实战
    嵌入式系统的开发在现代科技中发挥着至关重要的作用。它们被广泛应用于从智能家居到工业自动化的各种领域。在本文中,我们将聚焦于使用ARMCortex-M系列微控制器实现低功耗定时器的应用。我们将详细介绍在嵌入式系统中如何实现低功耗的定时器功能,并附上代码示例。嵌入式系统低功耗定......
  • Qt SQL API相关操作
    作者:苏丙榅链接:https://subingwen.cn/qt/qt-db/?highlight=sql来源:爱编程的大丙著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。另外,推荐野火关于sqlite 的文档:https://doc.embedfire.com/linux/qt/embed/zh/latest/ebf_qt/senior/qt_sqlite.html......
  • linux centos7 安装mysql
    home目录下新建安装包存放位置cdhomemkdirinstall_packetcd/home/install_packet下载mysql5.7rpm源wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm安装下载好的rpm包rpm-ivhmysql57-community-release-el7-8.noarch.rpm安装mysqly......
  • sql游标
    --声明游标declaretest_Cursortable3CURSORFORselectSysNoFROM[MY_ParkMgmt].[dbo].[T_PK_IndustryProject]where[LandSysNo]isnull--打开游标OPENtest_Cursortable3--声明游标提取变量所要存放的变量declare@idint--定位游标到哪一行fetchnextfromtest_C......
  • 【MySQL】DATE_FORMAT,DATE_ADD函数用法
    一、示例1select*frombi.testwhereDATE_FORMAT(UPDATE_TIME,'%Y-%m-%d')='2023-09-11';当然 '%Y-%m-%d'是可以根据实际需求调整的  二、示例22.1给时间增加一小时UPDATEbi.testSETUPDATE_TIME=DATE_ADD(UPDATE_TIME,INTERVAL1HOUR);2.2给时间减少......
  • 图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)
    一、环境介绍本文环境,以及本文所采用数据库为GreatSQL8.0.32-24$cat/etc/system-releaseRedHatEnterpriseLinuxServerrelease7.9(Maipo)$uname-aLinuxgip3.10.0-1160.el7.x86_64#1SMPTueAug1814:50:17EDT2020x86_64x86_64x86_64GNU/Linux$ldd--......
  • SQL语句的基本使用5-多值子查询
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13036这个作业的目标SQL语句的基本使用5-多值子查询1.在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。......