测试发现我们的一个接口存在性能问题,经分析是一个SQLMAP中一个SQL有两个层面的业务逻辑,用OR连接,如下所示。
select * from table_name where a='111' and b='222' and c='333' or d = '444';
此表中约有近100W的数据量,查看建表语句发现a、b、c是主键,而d字段未建索引。于是我立马想到的第步优化即在d上建索引。
一.索唯一索引
且从业务逻辑来看,d字段不会重复,因此给d字段建了唯一索引,给测试压测发现性能还是不行。
二.采用union all来替代or
分析业务,由于是进行重复情判断,因为从业务角度来讲,完全可以用union all来替代or,于是修改SQL如下:
select * from table_name where a='111' and b='222' and c='333' union all select * from table_name where d = '444';
再做性能分析,基本达到业务要求。
三.将以上SQL拆分成两条SQL语句
将以上SQL拆分成如下两条SQL语句:
select * from table_name where a='111' and b='222' and c='333'; select * from d = '444';
在应用层分开调用,再做性能分析,也基本达到业务要求。
四.SQL分析
1.explain select * from table_name where a='111' and b='222' and c='333' or d = '444';
2.explain select * from table_name where a='111' and b='222' and c='333' union all select * from table_name where d = '444';
3.explain select * from table_name where a='111' and b='222' and c='333';
4.explain select * from table_name where d = '444';
从SQL分析来看,主键和唯一索引在表中找到所需行的方式都为const,它表示当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。
system是const类型的特例,当查询的表只有一行的情况下,使用system。
五.Impossible WHERE noticed after reading const tables分析
换一个不存在的主键或唯一索引值,如如下SQL所示:
explain select * from table_name where d = 'aaa'; explain select * from table_name where a='aaa' and b='bbb' and c='ccc';
据说,这是因为mysql是首先对索引记录进行查询,然后在分析效果。
附:知识回顾
explain的type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
相关推荐
dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析
在IT领域,SQL性能分析是数据库管理中的关键环节,它涉及到如何有效地运行SQL查询,以提高系统的整体性能。本文将详细探讨"SQL性能分析工具效率分析"这一主题,旨在帮助你理解和利用这些工具来优化你的项目和SQL功能...
### Informix SQL性能分析 在IT行业中,数据库的性能优化是一项至关重要的工作,尤其是在大型企业级应用中。本文将详细介绍如何在Informix数据库中进行SQL性能分析,这对于提高数据库的整体性能、减少延迟以及提升...
帆软报表查询性能SQL分析插件是一款专门针对帆软报表系统的增强工具,旨在提升报表查询效率和性能优化。此插件能够深入解析SQL查询过程,帮助用户识别并解决潜在的性能瓶颈,确保报表的快速准确生成。以下是关于这款...
常用的数据库性能分析语句,服务器卡的时候,常用的可以查看后台连接、使用能耗比较高的语句代码
### DB2 SQL语句性能分析方法 #### 一、引言 DB2 Universal Database (UDB) 是IBM推出的一款高性能关系型数据库管理系统。为了确保DB2数据库能够在各种应用场景下高效稳定运行,DB2 UDB提供了丰富的工具帮助用户...
### 影响SQL Server性能的关键因素与SQL语句分析 在数据库管理与应用开发领域,SQL Server 是一种广泛使用的数据库管理系统。SQL Server 的性能直接影响着应用程序的响应速度、数据处理能力以及整体用户体验。为了...
sqlserver 性能分析工具大全,包括uml,MPSreport,SQL Server 2005 Best Practices Analyzer ,SQL Server 2005 Performance Dashboard Reports,SQL Server Web Data Administrator,sqlnexus 2.5.0.7,Relog Tool,...
Microsoft SQL Server(MSSQL)作为一款广泛使用的数据库管理系统,提供了丰富的工具和方法来监控其性能。本文将深入探讨MSSQL性能监控中的几个关键SQL语句,帮助数据库管理员(DBA)和开发者更好地理解和管理MSSQL...
"高性能SQL调优"这一主题涵盖了许多相关知识点,包括但不限于以下内容: 1. **SQL优化基础**:SQL查询是数据库操作的核心,理解SQL的工作原理,如解析、执行计划生成、索引使用等,是调优的基础。了解SQL的执行过程...
PLSQL程序性能分析及优化 经验总结 实施过程中,经常会使用 PL/SQL Developer 工具进行数据转换和处理业务数据。通过性能 优化来提高程序执行效率是必须掌握的一份技能。性能问题中绝大部分都是由于程序编写的 不合理...
Oracle数据库是全球领先的企业级...由于是关于Oracle高性能SQL引擎的深入剖析,这本资料是数据库开发者和管理员难得的参考资料,尤其对于处理复杂业务逻辑和海量数据的场景下,掌握这些优化和调优技巧显得尤为重要。
【SQL2005性能优化】SQL Server 2005是Microsoft推出的一款关系型数据库管理系统,具有强大的功能和良好的性能。然而,随着数据量的增长和业务需求的复杂化,性能问题常常成为关注的重点。本文将探讨如何针对SQL ...
《SQL性能分析》这本书是数据库性能优化领域的重要参考资料,它深入浅出地探讨了如何对SQL查询进行有效的性能分析和调优。对于那些希望提升数据库性能、解决查询速度问题的IT从业者来说,这本书是一个不可多得的学习...
总结,SQL性能测试是数据库管理的重要环节,通过深入分析SQL语句的执行情况,我们可以找出性能问题并进行优化。实践中的实例分析和持续监控是提升数据库性能的关键步骤。在“SQL语句性能测试.txt”中,我们可以找到...
SQLServer是微软公司开发的一款企业级数据库管理系统,广泛应用于大型企业及组织,提供高性能、高可用性和安全性。 使用"Sql查询分析器",你可以执行以下几种类型的SQL语句: 1. **SELECT语句**:这是最常用的SQL...
### SQL Server 2005 性能分析与调优 #### 一、性能优化的思想与流程 在《SQL Server 2005 性能分析和调优》这一主题中,作者首先强调了性能优化的基本思想:通过一系列的方法和技术手段来提升SQL Server 2005的...
2. **SQL Trace记录**:通过对关键SQL语句进行跟踪记录,可以收集到详尽的性能数据,进而深入分析执行效率低下的原因。 3. **SQL Monitor监控**:利用DB2的SQL Monitor功能,可以实时监控SQL语句的执行情况,及时...