私の変数は、次のように設定されています。MySqlの変数を設定して、クエリ中にリセットされないようにするにはどうすればよいですか?
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は、両方とも非常に非常に大きなテーブルなので、クエリが実行するのに非常に長い時間がかかりますそれは私の目的のために大丈夫です。問題は、私の変数が何らかの形でクエリ中にリセットされるため、結果が空に戻ってしまうことです。私の質問は、彼らはクエリ中にタイムアウトしないように変数を設定する方法はありますか?
本当にありがとうございます。
セッション変数が自分自身をリセットしない、彼らは接続の寿命のために持続する必要がありますあなたはあなたの大きなテーブルを結合するとき「WHERE」を使用するのではなく「AND」。 – Uueerdo
変数を使用する代わりに実際の日付を差し込んでテストした結果、結果が返されました。そのため、クエリ中に変数に何かが起こっています。クエリが空のセットを返した後にSELECT @start_dateを実行しようとすると、NULLを返します。 – user6655061
これは通常、接続がリセットされていることを示します。変数に代入しない通常のSELECTは、その値に影響してはいけません。どのようにセットとクエリを実行していますか? – Uueerdo