秒级的 SQL 查询提升方案

简介: 秒级的 SQL 查询提升方案

秒级的 SQL 查询提升方案


从经验上来看,在数据库层面的请求应答时间必须在100ms 以内,秒级的SQL

查询通常存在巨大的性能提升空间,有如下应对方案:


  1. 建立高效且合适的索引:索引谁都可以建,但要想建好难度极大。因为索引既有数据特征,又有业务特征,数据量的变化会影响索引的选择,业务特点不一样,索引的优化思路也不一样。通常某个字段平时不用,但是某种触发场景下命中"索引缺失"的字段会导致查询瞬间变慢。所以,要事先明确业务场景,建立合适的索引。
  2. 查连接资源未显式关闭的情形:要特别注意在 ThreadLocal 或流式计算中使用数据库连接的地方。
  3. 合并短的请求:根据CPU的空间局部性原理,对于相近的数据,CPU会一起提取到内存中。另外,合并请求也可以有效减少连接的次数。
  4. 合理拆分多个表join的SQL,若是超过三个表则禁止join: 如果表结构建得不合理,应用逻辑处理不当,业务模型抽象有问题,那么三表join的数据量由于笛卡儿积操作会呈几何级数增加,所以不推荐这样的做法。另外,对于需要join的字段,数据类型应保持绝对一致。多表关联查询时,应确保被关联的字段要有索引。
  5. 使用临时表:某种情况下,该方法是种比较好的选择。 曾经遇到一个场景不使用临时表需要执行I个多小时,使用临时表可以降低至2分钟以内。因为在不断的嵌套查询中,已经无法很好地利用现有的索引提升查询效率,所以把中间结果保存到临时表,然后重建索引,再通过临时表进行后续的数据操作。
  6. 应用层优化:包括进行数据结构优化、并发多线程改造等。
  7. 改用其他数据库:因为不同数据库针对的业务场景是不同的,比如 Cassandra、MongoDB。


目录
相关文章
|
16天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
83 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
23天前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
34 8
|
29天前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
53 4
|
1月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
1月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
120 10
|
1月前
|
SQL 关系型数据库 MySQL
|
2月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
2月前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
115 5
|
2月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
下一篇
DataWorks