sql查询在生产中花费太长时间

时间:2016-10-13 16:10:12

标签: mysql

我有一个在本地数据库中使用小数据集的查询,但是在生产中它需要太长时间,对此的任何帮助都会很好:

ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource("Iconos/icono.png"));
this.setFrameIcon(icon);

2 个答案:

答案 0 :(得分:0)

在加入之前在子查询中执行求和可能会有所帮助,因此它可以在真实表而不是临时表上进行操作。

SELECT su.orgid, su.userid, a.record_week, a.record_month, a.record_3month, a.record_6month, a.record_year
FROM prod_db.user AS su
JOIN (SELECT userid,
        SUM(IF(create_dt>CURRENT_DATE - INTERVAL 1 WEEK,processed_records,0)) Record_Week, 
        SUM(IF(create_dt>CURRENT_DATE - INTERVAL 1 MONTH,processed_records,0)) Record_Month, 
        SUM(IF(create_dt>CURRENT_DATE - INTERVAL 3 MONTH,processed_records,0)) Record_3Month, 
        SUM(IF(create_dt>CURRENT_DATE - INTERVAL 6 MONTH,processed_records,0)) Record_6Month, 
        SUM(IF(create_dt>CURRENT_DATE - INTERVAL 1 YEAR,processed_records,0)) Record_Year 
    FROM archive.log_archive
    GROUP BY userid) AS arc 
ON su.name = arc.userid

不幸的是,我不认为这种求和可以利用create_dt上的索引。唯一有用的索引位于useridname

答案 1 :(得分:-1)

这种查询需要时间。我会建议下面的步骤  1.优化查询(检查表上的索引)  2.你应该调整mysql服务器(根据你的数据库大小和服务器配置更改my.ini文件中的mysql配置)

https://mysqltuner.codeplex.com/

http://mysqltuner.com/