如何在MySql中设置变量,以便在查询期间不会重置?

时间:2016-07-29 19:42:00

标签: mysql variables

我的变量设置如下:

SET @start_date = '2015-07-20';
SET @end_date = '2016-06-30';

我的查询如下:

SELECT a.user_id, a.school_id, COUNT(a.log_id) logs
FROM table1 a
JOIN tbl2 b ON a.log_id = b.log_id
JOIN users u ON a.user_id = u.user_id
WHERE  DATE(log_date) BETWEEN @start_date AND @end_date
AND b.column2 = 123
GROUP BY a.user_id, b.school_id;

表1和表2都是非常大的表,因此查询需要很长时间才能运行,这对我来说很好。问题是我的变量在查询期间以某种方式被重置,因此结果变回空白。我的问题是,有没有办法设置变量,以便它们在查询期间不会超时?

真的很感激任何想法!

1 个答案:

答案 0 :(得分:0)

这是一个奇怪的问题。 如果优化查询以更快地运行,则问题可能会得到解决。使用' AND'而不是' WHERE'当你加入你的大桌子时:

SELECT a.user_id, a.school_id, COUNT(a.log_id) logs FROM table1 a JOIN tbl2 b ON a.log_id = b.log_id JOIN users u ON a.user_id = u.user_id AND DATE(log_date) BETWEEN @start_date AND @end_date AND b.column2 = 123 GROUP BY a.user_id, b.school_id;