导语 本文讲解的知识点主要有:公用表表达式(CTE)、SQL NULL 函数及SQL 条件判断、窗口函数;针对人群:对SQL一知半解,停留在增删改查初级层面,大神可以飘过。一、公用表表达式(Common Table Expression,CTE)CTE 可以作为临时的结果集,可以在DML(Data Manipulation Language)语句中被多次引用 ......
494
0
0
2022-07-11
1. 当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层如下图 两个sql的结果是一样的,但是两个sql的执行计划是不一样,在type中index的效率远不如const where条件中 actor_id+4 表达式影响了执行计划2. 尽量使用主键查询,而不是其他索引,主键查询不会出现回表查询。我们所有的表基本都会有主键的,所以平时 ......
396
0
0
2022-07-03
在做 SQL 性能分析的时候,我们会发现每个子查询君可以快速查询出结果,但是当两张表或两个子查询进行关联后。效率会急转直下,甚至会很长时间无结果输出。那么这个时候,我们应该如果优化并提高效率呢?添加索引是一种最方便并可以提高效率的方式。首先我们需要查看表与表之间的的关联字段。分别将各自表的字段添加到索引中(最好创建单列索引,多列索引效率提升有限)添加索引可以 ......
512
0
0
2022-06-20
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。常见的简化规则如下:1)不要有超过5个以上的表连接(JOIN)。2)考虑使用临时表或表变量存放中间结果。3)少用子查询。4)视图嵌套不要过深,一般 ......
508
0
0
2022-06-19
在编写高效 SQL 时,你可能遇到的最有影响的事情就是索引。但是,一个很重要的事实就是很多 SQL 客户端要求数据库做很多“不必要的强制性工作”。 -- Jooq本文导航-不必要的 …… 03%-强制性 …… 10%-内存消耗 …… 12%-索引使用 …… 22%-SQL 转换 …… 47%-同时…… …… 73%-计算出现次数 …… 80%-总结 …… 8 ......
390
0
0
2022-06-15
作者介绍梁敬彬,福富研究院副理事长、公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验。多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的影响力。著有多本畅销书籍,代表作有《收获,不止Oracle》。学习完第一章内容的小王,知道了解决问题要先整体再局部,从此不再盲目解决问题了。关于整体性方面,他不仅知道了五大性能报告的具 ......
384
0
0
2022-05-27
作者介绍颜圣杰,.NET平台软件工程师,对DDD领域驱动设计感兴趣,目前在研究ABP框架,热爱写作与分享。最近一段时间系统新版本要发布,在beta客户测试期间,暴露了很多问题,除了一些业务和异常问题外,其它都集中在性能上。有幸接触到这些性能调优的机会,这里跟大家归纳交流一下。性能优化是一个老生常谈的问题了,典型的性能问题如页面响应慢、接口超时,服务器负载高、 ......
406
0
0
2022-05-18
SQL语句的优化如何索取有性能问题SQL的渠道通过用户反馈获取存在性能问题的SQL通过慢查日志获取存在性能问题的SQL实时获取存在性能问题的SQL慢查询日志介绍slow_quey_log=on 启动记录慢查询日志slow_query_log_file 指定慢查询日志的存储路径及文件(默认情况下保存在MySQL的数据目录中)long_query_time 指定 ......
511
0
0
2022-04-30
1.’对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from ......
318
0
0
2022-04-25
关注私信小姐姐,分享更多程序员踩过的坑,以及高级JAVA开发学习资料。分享sql性能优化的几点注意,供参考。实际项目中都是根据实际脚本执行计划进行分析,找问题,然后解决问题。如果能在开发过程中遵守一些规范,那就能减少后续优化的时间。1. 尽量使用prepareStatement,利用预处理功能。2. 在进行多条记录的增加、修改、删除时,建议使用批处理功能,批 ......
289
0
0
2022-04-19
本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。key列,使用到的索引名。如果没有选择索引,值是NULL。可 ......
322
0
0
2022-04-16
场景索引优化单列索引多列索引索引覆盖排序场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表create table Course( c_id int PRIMARY KEY, name varchar(10) ) 数据100条学生表:create table Student( id int PRIMARY KEY, name varc ......
311
0
0
2022-04-14
概述一般来说,SQL查询优化器分析给定查询的许多选项,预估每个选项的成本,最后选择成本最低的选项。如果查询优化器选择了错误的计划,则性能差异可能从几毫秒到几分钟。幸运的是,现在有许多第三方SQL查询优化工具可以自动优化每个SQL查询。这些工具极大地简化了开发人员和数据库管理员的工作,因为他们提供了正确的查询调优建议和索引建议。现在我们已经知道了SQL查询优化 ......
665
0
0
2022-04-11
使用复合索引如果经常执行如上查询,那么建立三个单独索引不如建立一个复合索引,因为三个单独索引通常数据库每次执行只能使用其中一个,虽然这样比不使用索引而进行全表扫描提高了很多效率,但使用复合索引因为索引本身就对应到三个字段上的,效率会有更大提升。那么为什么数据库只支持一条查询语句只使用一个索引?简单的讲是因为N个独立索引同时在一条语句使用的效果比只使用一个索引 ......
387
0
0
2022-04-08
01 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。02 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。03 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id fro ......
440
0
0
2022-04-07