数据库优化专题---7、SQL语句优化
数据库优化专题—1、表的主键用数字还是UUID
数据库优化专题—2、逻辑删除还是物理删除
数据库优化专题—3、千万记录如何快速分页
数据库优化专题—4、读多写少和读多写多
数据库优化专题—5、删改数据如何避免锁表
数据库优化专题—6、如何避免偷换交易中的商品信息
数据库优化专题—7、SQL语句优化
数据库优化专题—8、Mysql参数优化
数据库优化专题—9、索引优化
数据库优化专题—10、存储优化
数据库优化专题—11、数据库结构优化
目录
- 优化SQL语句(一)
- 优化SQL语句(二)
- 优化SQL语句(三)
- 优化SQL语句(四)
- 优化SQL语句(五)
- 总结
这节主要讲解一些SQL优化方式。
优化SQL语句(一)
- 不要把SELECT子句写成SELECT *;
SELECT * FROM t_emp;//数据库执行,1、查询表结构 2、换字段 3、再执行
- 谨慎使用模糊查询;
SELECT name FROM t_emp WHERE name LIKE '%S%';//不走索引,全表扫描
SELECT name FROM t_emp WHERE name LIKE 'S%';//走索引
优化SQL语句(二)
- 对ORDER BY排序的字段设置索引;
SELECT name FROM t_emp ORDER BY deptno;
- 少用IS NULL和IS NOT NULL;
SELECT name FROM t_emp WHERE comm IS NOT NULL;//不走索引
SELECT name FROM t_emp WHERE comm >=0;//走索引,设置非空为大于0值
SELECT name FROM t_emp WHERE comm =-1;//走索引,设置非空为-1值
优化SQL语句(三)
- 尽量少用 != 运算符;
SELECT name FROM t_emp WHERE deptno !=20;//不走索引,全表扫描
SELECT name FROM t_emp WHERE deptno <20 AND deptno>20;//走索引
- 尽量少用OR运算符;
注: OR之前表达式走索引,之后不走索引;
SELECT name FROM t_emp WHERE deptno=20 OR deptno=30;//deptno=20走索引,deptno=30不走索引
SELECT name FROM t_emp WHERE deptno=20
UNION ALL
SELECT name FROM t_emp WHERE deptno=30;//走索引
优化SQL语句(四)
- 尽量少用IN和NOT IN运算符;
注: 在 5.5 之后的版本,MySQL 做了优化。MySQL 在 2010 年发布 5.5 版本中,优化器对 in 操作符可以自动完成优化,针对建立了索引的列可以使用索引,没有索引的列还是会走全表扫描;
SELECT name FROM t_emp WHERE deptno=20 OR deptno=30;//deptno=20走索引,deptno=30不走索引
SELECT name FROM t_emp WHERE deptno=20
UNION ALL
SELECT name FROM t_emp WHERE deptno=30;//走索引
- 避免条件语句中的数据类型转换;
SELECT name FROM t_emp WHERE deptno='20';//数据库先转换数据类型再比较,效率低
优化SQL语句(五)
- 在表达式左侧使用运算符和函数都会让索引失效;
SELECT name FROM t_emp WHERE salary*12>=100000;//不走索引
SELECT name FROM t_emp WHERE salary>=100000/12;//走索引
SELECT name FROM t_emp WHERE year(hiredate)>=2000;//不走索引
SELECT name FROM t_emp WHERE hiredate>='2020-01-01 00:00:00';//走索引
总结
优化SQL语句,主要是如何走索引查询,减少数据库计算等。
数据库优化专题---7、SQL语句优化相关推荐
- 优化数据库的方法及SQL语句优化的原则
优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...
- 优化数据库的思想及SQL语句优化的原则
优化数据库的思想: ================ 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Syb ...
- MySQL优化之三:SQL语句优化
一 SQL语句优化的一般步骤: 1 通过show status命令了解各种SQL语句的执行频率 mysql> show status; #show status:显 ...
- Mysql删除语句优化_MySQL性能优化之常用SQL语句优化
SQL性能优化的目标:至少要达到range级别,要求是ref级别,consts最高.[阿里巴巴JAVA开发手册] 说明: 1).consts单表中最多只有一个匹配行(主键/唯一索引),在优化阶段即可读 ...
- sql查询索引语句_sql优化总结--基于sql语句优化和索引优化
概述 最近做查询,统计和汇总.由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万.所以在系统中做sql优化比较多,特此写一篇文章总结一下关于sql优化方面的经验. 导致查询缓慢的原因 1.数 ...
- 数据库:30种SQL语句优化,进阶必备!
SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考. 01 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by ...
- Sql优化一:sql语句优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- SQL优化SQL语句优化的目的
sql的优化,要看优化什么,性能,效率,稳定性,安全性?每个方面都有很大的不同. 内容参见:https://blog.csdn.net/sinat_37464123/article/details/8 ...
- mysql sql优化_MySQL数据库SQL语句优化原理专题(三)
需求 做过开发的同学,对分页肯定不会陌生,因为很多前台页面展示,为了更好的展示数据,就会用到分页,所以如何写一个高性能的分页SQL语句,是每一个开发人员需要掌握的技能. 分页SQL 这里给大家写一个分 ...
最新文章
- iOS9基础知识(OC)笔记
- RichTextBox中表格不能折行的问题
- RTX3090深度学习环境配置(PyTorch1.8)
- TCP socket心跳包示例程序
- 计算机网络作业6,计算机网络作业 6
- 电视盒安装php,全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx...
- 数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】
- php get获取腾讯视频vid,获取腾讯视频源地址链接的方法
- mysql存储过程核销_mysql存储过程
- 【MySQL】mysql死锁以及死锁日志分析
- 弱电系统集成(收集)
- Android thumbnail 图片的获得及与原始图片的映射
- Struts2之checkboxlist 设置默认值和结果回显
- java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager
- 大型央企云边协同建设方案及其借鉴意义分析
- 苹果27寸一体机拆机图解_21.5/27寸新iMac完全拆解:维修要你命
- 智者务其实,愚者争虚名
- 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
- AntV G2 Tooltip
- java创建pdf空白页_使用itext将html转成PDF,PDF空白的问题。