私はデータベースのものと相互参照し、それらの間にあるものをフィルタリングする必要があるIDの束(外部ソースから)を与えられます特定の日付と、また「有効にされている」などのパラメータがあります。MySQLでIN()に渡される項目の最大数は何ですか
SELECT * FROM `table` WHERE `id` IN (csv_list_of_external_ids)
AND (my other cross-reference parameters);
これを行うことで、すべての着信IDのうち、私が望むものを得ることができます。しかし、明らかに、これは、外部IDが数千にある場合、非常に効率的な方法ではありません。 MySQLがこのような膨大なクエリをサポートするかどうかは不明です。
(ユーザーデータと外部IDの両方がすべてのクエリでかなり変更されるため)何もキャッシュできないことと、これらのクエリが少なくとも10秒ごとに発生することを考えれば、他にどのようなSQLの選択肢がありますか?
問題は、私はそのパラメータを制御できないということです。 – Julian
次に、クエリが設定されている制限よりも短くなるようにする必要があります。その1つの方法は、複数のINSERT文を使用してIN()句のすべての値をテンポラリ・テーブルに挿入し、クエリでサブ・セレクトを使用することです。WHERE 'id' IN(SELECT id FROM temp_table) – Flimzy
一時テーブルでは、MEMORYをテーブルのエンジンとして使用していますか? – Julian