MySQL以外のものではかなり簡単です。IF条件実行クエリの実行、その他のクエリの実行
基本的には、私が使用しているインデックスのタイプと、特定の用語が返す結果の数に基づいて、いくつかの条件を切り替える必要があります。効果に
何か:
IF (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
EXECUTE QUERY A
ELSE
EXECUTE QUERY B
これはMySQLの文では可能ですか?
EDIT:
クエリA:
SELECT id
FROM table_a
FORCE INDEX(id)
JOIN table_b ON table_a.id = table_b.id
WHERE term LIKE "term"
ORDER BY date
LIMIT 100;
クエリB:
SELECT id
FROM table_a
FORCE INDEX(term)
JOIN table_b ON table_a.id = table_b.id
WHERE term LIKE "term"
GROUP BY term # These lines would be included for a few conditions not mentioned above.. but are necessary
HAVING COUNT = 1 # same...
ORDER BY date
LIMIT 100;
クエリスイッチの理由は、私が劇的に基づいて異なる結果時間を取得することです「用語」の人気。
特に、「QUERY A」と「QUERY B」とは何ですか? SQLは、通常、この状況をクリエイティブなWHERE句で処理できるようにしますが、A&Bが十分に関連しているかどうかわからない限りは、言い表すことはできません。 –
...そうでなければ、MySQLは、通常のクエリではなく、関数、トリガ、およびストアドプロシージャでフロー制御ロジックの使用を許可します。 –
理論上 - はい( 'CASE'ステートメントと結合の助けを借りて)、両方のクエリのフィールドとレコードの数が一致するかどうかによって異なります。これらの2つをテストデータとともに投稿して、答えることができます。 –