ホームページ >データベース >mysql チュートリアル >LIMIT 1 を指定した UNION ALL は連続クエリを効率的にシミュレートできますか?

LIMIT 1 を指定した UNION ALL は連続クエリを効率的にシミュレートできますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 14:59:45714ブラウズ

Can UNION ALL with LIMIT 1 Efficiently Simulate Sequential Queries?

UNION ALL を使用した順次選択クエリ

問題:
を使用してデータベース テーブル内の単一行を検索する検索条件は段階的に減少します。例:

SELECT * FROM image WHERE name LIKE 'text' AND group_id = 10 LIMIT 1

結果が得られない場合は、次を実行します:

SELECT * FROM image WHERE name LIKE 'text' LIMIT 1

それでも結果が得られない場合は、 execute:

SELECT * FROM image WHERE group_id = 10 LIMIT 1

このプロセスは単一で実行できますか?式?

解決策:

SELECT * FROM image WHERE name = 'name105' AND group_id = 10
UNION ALL
SELECT * FROM image WHERE name = 'name105'
UNION ALL
SELECT * FROM image WHERE group_id = 10
LIMIT 1;

説明:

  • UNION ALL複数の SELECT ステートメントの結果を 1 つのステートメントに結合します。 table.
  • LIMIT 句は、結合された結果の最初の行のみが返されることを指定します。
  • (name, group_id) および (group_id) のインデックスはパフォーマンスにとって重要です。
  • PostgreSQL は LIMIT を超えると追加の SELECT ステートメントの処理を停止するように実行プランを最適化するため、このクエリは特に効率的です。満足しました。

一般的な解決策:

上記のアプローチは、追加の SELECT ステートメントを UNION ALL チェーンに追加することで、任意の数の検索パラメーターに対して一般化できます。

ソートに関する考慮事項結果:

LIMIT 句は結果全体に適用されるため、最初の行のみが返されるため、並べ替えは特に役に立ちません。

以上がLIMIT 1 を指定した UNION ALL は連続クエリを効率的にシミュレートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。