我的变量设置如下:
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都是非常大的表,因此查询需要很长时间才能运行,这对我来说很好。问题是我的变量在查询期间以某种方式被重置,因此结果变回空白。我的问题是,有没有办法设置变量,以便它们在查询期间不会超时?
真的很感激任何想法!
答案 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;