统计数据时,sql执行超时,如何处理

在工作中,除了开发,有时还需要做一些数据统计。

统计数据时,sql执行超时。

可以通过以下手段处理。

一、优化sql

首先,通过 EXPLAIN 查看执行计划,看有没有走索引,能加索引的加索引,没有走索引的尽量优化。

常见的sql优化见: https://blog.csdn.net/sinat_32502451/article/details/136075255

二、临时调大超时时间

如果默认的超时时间是1分钟,可以先临时调大,待sql 执行完毕,再调整回去。

复制代码
SET SESSION max_execution_time = 120000; -- 单位是毫秒 (ms),这里设为 120 秒

或者是:

复制代码
--  通过 /*+ MAX_EXECUTION_TIME(120000) */  调整这次查询的超时时间。
SELECT /*+ MAX_EXECUTION_TIME(60000) */ user_id FROM t_users ;

三、建临时表

如果一个 sql 很复杂,那么就要尽量拆分,可以通过临时表来协助。

比如:

复制代码
SELECT 
    u.user_id,
    t.event_name
FROM t_users u
LEFT JOIN (
    SELECT DISTINCT user_id, event_name
    FROM t_activities
    WHERE date BETWEEN '2020-07-31' AND '2020-08-31'
) t ON u.user_id = t.user_id;

这个sql, 可以先将 LEFT JOIN 里面(也可以是子查询) 的数据先放进临时表。

注意:如果某些sql不允许使用 CREATE TEMPORARY TABLE 这种语法,也可以用 CREATE TABLE。

复制代码
-- 第一步:创建并填充临时表(只存去重后的 ID)
CREATE TEMPORARY TABLE tmp_active_users AS
SELECT DISTINCT user_id 
FROM t_activities 
WHERE date BETWEEN '2020-07-31' AND '2020-08-31';

-- 第二步:直接关联查询
SELECT u.user_id
FROM t_users u
JOIN tmp_active_users t ON u.user_id = t.user_id;

这种用临时表处理后,数据量会极大地下降,sql 执行时间会降低。

四、CSV 导出导入

如果连建临时表都超时了,那也可以先 SELECT , 然后用 CSV 导出再导入。

导出导入格式,最好用 CSV, 非常轻量。

详情见:
https://blog.csdn.net/sinat_32502451/article/details/159658198

五、写代码统计

某些太复杂的 sql,可以先分批查出表数据,导出到 excel,最后再通过写代码,读取excel数据,进行统计。

相关推荐
踏月的造梦星球6 小时前
DMDPC 学习:架构、部署、运维与调优
运维·数据库·学习·架构
潘正翔7 小时前
docker核心概念
linux·运维·服务器·docker·容器·centos·运维开发
韩楚风7 小时前
【参天引擎】事务生命周期 / MVCC / Undo / ACID / 分布式事务 功能域整体解析
数据库·分布式·mysql·架构·cantian
renhongxia17 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
程序员无隅7 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
愿做无知一猿8 小时前
Nacos连接MySQL异常?DataGrip竟成救星
数据库·mysql
G.O.G.O.G8 小时前
LeetCode SQL 从入门到精通(MySQL)06(上)
数据库·sql·mysql·leetcode
研究员子楚8 小时前
GEO行业发展标准体系白皮书V2.0-第10卷 · 全球篇:跨国标准协同与全球品牌语义治理框架
数据库·人工智能·microsoft·架构·geo
Dovis(誓平步青云)9 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
专注_每天进步一点点9 小时前
SLB(绑定弹性公网ip)-gateway-业务pod,gateway上出现reset by peer,业务pod上没有reset by peer
服务器·tcp/ip·gateway