ホームページ >データベース >mysql チュートリアル >最初のクエリがゼロ行を返した場合にのみ、MySQL で 2 番目の SELECT クエリを効率的に実行するにはどうすればよいですか?

最初のクエリがゼロ行を返した場合にのみ、MySQL で 2 番目の SELECT クエリを効率的に実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-25 07:34:33892ブラウズ

How Can I Efficiently Execute a Second SELECT Query in MySQL Only if the First Query Returns Zero Rows?

条件付き SELECT クエリ: 行数に基づいた代替クエリの実行

PHP スクリプトを最適化するには、動的に実行する方法を探しています。最初のクエリがゼロ行を返した場合にのみ、2 番目の SELECT クエリを実行します。 MySQL でこれを実現する方法は次のとおりです。

1 つの方法は、ネストされた IF ステートメントを使用して、最初のクエリの行数を比較することです。

IF (SELECT COUNT(*) FROM proxies WHERE A='B') > 0
  THEN SELECT * FROM proxies WHERE A='B'
ELSEIF (SELECT COUNT(*) FROM proxies WHERE A='C') > 0
  THEN SELECT * FROM proxies WHERE A='C'
END IF

ただし、この方法では各クエリが実行されます。各条件に対して 2 回。より適切な最適化を行うには、EXISTS 演算子とともに UNION ALL を使用することを検討してください。

SELECT *
FROM proxies
WHERE A='B'
UNION ALL
SELECT *
FROM proxies
WHERE A='C' AND NOT EXISTS (
  SELECT 1
  FROM proxies
  WHERE A='B'
)

このクエリは、最初に A='B' を持つ行を検索し、それらを返します。 A='B' の行が見つからない場合は、A='C' の行をフェッチし、クエリが 1 つだけ実行されるようにします。

SQL Fiddle のデモはここにあります: [リンク]

このアプローチでは、最初のクエリがゼロ行を返した場合にのみ 2 番目のクエリが効率的に実行され、PHP スクリプトのパフォーマンスが向上します。

以上が最初のクエリがゼロ行を返した場合にのみ、MySQL で 2 番目の SELECT クエリを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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