SQL调优

sql · 浏览次数 : 26

小编点评

**索引优化** * 创建必要的索引,包括联合索引,以提高查询效率。 * 避免创建不必要的索引。 * 使用合适的索引进行查询。 **优化查询语句** * 使用正确的 WHERE 子句、JOIN 语句和子查询。 * 使用 WHERE 子句筛选所需列。 * 避免全表扫描和不必要的数据检索。 **避免使用 SELECT *** * 明确指定要检索的列。 * 使用 SELECT * 来检索所有列,可以影响查询性能。 **合理使用连接** * 选择合适的连接类型进行 JOIN。 * 使用正确的连接顺序进行 JOIN。 **使用适当的数据类型** * 选择适合数据的数据类型。 * 使用适当的数据类型可以减少网络传输的数据量和内存占用。 **分页优化** * 使用 LIMIT 或 ROWNUM 来限制返回的行数。 * 使用 OFFSET 来避免在查询中使用 OFFSET。 **避免使用函数和操作符** * 在查询条件中避免使用函数和操作符。 * 在查询之前处理数据以提高性能。 **定期执行表维护** * 定期执行表维护操作,如索引清理、统计信息收集等。 * 保持表的性能和响应时间。

正文

1. 索引优化: 确保适当的索引在数据库表上创建,以加快查询性能。分析查询语句,确定可能需要的列和联合索引,并避免过多或不必要的索引。
2. 优化查询语句: 优化查询语句的写法,避免全表扫描和不必要的数据检索。使用合适的WHERE子句、JOIN语句和子查询,以提高查询效率。
3. 避免使用SELECT * : 明确指定需要检索的列,而不是使用SELECT*来检索所有列。这可以减少网络传输的数据量,提高查询性能。
4. 合理使用连接:在使用JOIN连接表时,选择合适的连接类型(如INNER JOIN、LEFT JOIN、RIGHT JOIN等)以及适当的连接顺序,以避免不必要的数据重复和性能问题。
5. 使用适当的数据类型: 选择适当的数据类型来存储数据,避免存储过多的数据或使用过大的数据类型。这可以减少磁盘空间和内存占用,并提高查询和排序的效率。
6. 分页优化: 对于分页查询,使用合适的LIMIT或ROWNUM来限制返回的行数,并避免在查询中使用OFFSET。OFFSET会导致数据库跳过大量行,对性能造成负面影响。
7. 避免使用函数和操作符: 在查询条件中避免使用函数和操作符,尽可能在查询之前处理好数据,以提高查询性能。
8. 定期执行表维护: 定期执行表的优化和维护操作,如重新生成索引、收集统计信息、清理无用数据等,以保持表的性能和响应时间。
9. 分区和分表: 对于大型表,考虑使用分区或分表来分割数据,提高查询和维护性能。
10. 监视和调整数据库配置: 监视数据库的配置参数和性能指标,如缓冲区大小、连接池大小、并发连接数等,并进行适当的调整以满足实际需求。

第一点和第二点是开发中常用到的,索引优化其实就是一些索引规约,该如何创建索引、对哪些字段应当创建索引等,具体可看我的MySQL规约中的索引规约;对于全表扫描,往往是因为where语句不当,或者字段值设置不当,导致在查询时不走索引,当然,like语句或者in(not in)语句也常常导致全表扫描,这也是我们在sql调优中应当关注的方向。

与SQL调优相似的内容:

SQL调优

**1. 索引优化:** 确保适当的索引在数据库表上创建,以加快查询性能。分析查询语句,确定可能需要的列和联合索引,并避免过多或不必要的索引。 **2. 优化查询语句:** 优化查询语句的写法,避免**全表扫描**和不必要的数据检索。使用合适的WHERE子句、JOIN语句和子查询,以提高查询效率。

一次SQL调优 聊一聊 SQLSERVER 数据页

一:背景 1.讲故事 最近给一位朋友做 SQL 慢语句 优化,花了些时间调优,遗憾的是 SQLSERVER 非源码公开,玩起来不是那么顺利,不过从这次经历中我觉得明年的一个重大任务就是好好研究一下它,争取在 SQLSERVER 性能优化上做一些成绩,哈哈! 个人觉得要想深入研究 SQLSERVER,

TiDB与MySQL的SQL差异及执行计划简析

TiDB作为NewSQL,其在对MySQL(SQL92协议)的兼容上做了很多,MySQL作为当下使用较广的事务型数据库,在IT界尤其是互联网间使用广泛,那么对于开发人员来说,1)两个数据库产品在SQL开发及调优的过程中,都有哪些差异?在系统迁移前需要提前做哪些准备? 2)TiDB的执行计划如何查看,如何SQL调优? 本文做了一个简要归纳,欢迎查阅交流。

[转帖]88. sys_kwr

88. sys_kwr ¶ 88.1. 插件sys_kwr简介 ¶ 插件sys_kwr是KingbaseES 的一个扩展插件。主要功能是通过周期性自动记录性能统计相关的快照,分析出KingbaseES的操作系统运行环境、数据库时间组成、等待事件和TOP SQL等性能指标,为数据库性能调优提供指导。

[转帖]【建议收藏】15755 字,讲透 MySQL 性能优化(包含 MySQL 架构、存储引擎、调优工具、SQL、索引、建议等等)

https://my.oschina.net/jiagoushi/blog/5593246 0. 目录 1)MySQL 总体架构介绍 2)MySQL 存储引擎调优 3)常用慢查询分析工具 4)如何定位不合理的 SQL 5)SQL 优化的一些建议 1 MySQL 总体架构介绍 1.1 MySQL 总体

GaussDB(DWS)性能调优:Sort+Groupagg聚集引起的性能瓶颈案例

本文针对SQL语句长时间执行不出来,且verbose执行计划中出现Sort+GroupAgg聚集方式的案例进行分析。

[转帖]TiDB调优小结

https://www.jianshu.com/p/d5ee4dca66d8 TiDB概览 先来一段官网的描述 TiDB server:无状态SQL解析层,支持二级索引,在线ddl,兼容MySQL协议,数据转储SQL输入->解析语法树(AST)->逻辑计划分析->执行计划优化->cost-base

[转帖]JVM 调优之 Reserved Code Cache Size

https://www.modb.pro/db/251381 01 现象 社区小伙伴最近在为 Kylin 4 开发 Soft Affinity + Local Cache 的性能测试过程中,遇到了压测场景下查询响应时间不稳定问题, RT 随着时间变化较大,现象如下: 同样的 SQL (只是参数不同)

【Azure 存储服务】Azure Storage Account 下的 Table 查询的性能调优

问题描述 Azure Storage Account 下的 Table 查询的性能调优? 问题解答 因为Azure Storage Table服务(表服务) 与常规的关系型数据库不一样(例如:MySQL, SQL Server等),他里面存储的实体(Entity,表示一条数据)不能通过添加索引来优化

[转帖]在线修改集群配置

https://docs.pingcap.com/zh/tidb/stable/dynamic-config 在线配置变更主要是通过利用 SQL 对包括 TiDB、TiKV 以及 PD 在内的各组件的配置进行在线更新。用户可以通过在线配置变更对各组件进行性能调优而无需重启集群组件。但目前在线修改 T