ホームページ  >  記事  >  データベース  >  MySQL の「SELECT は MAX_JOIN_SIZE を超える行を検査します」エラーを解決する方法?

MySQL の「SELECT は MAX_JOIN_SIZE を超える行を検査します」エラーを解決する方法?

DDD
DDDオリジナル
2024-10-23 18:21:27342ブラウズ

How to Resolve

MySQL: 「SELECT は MAX_JOIN_SIZE を超える行を検査します」エラーの解決

MySQL では、「SELECT はさらに多くの行を検査します」というエラー メッセージが表示されるMAX_JOIN_SIZE 行数よりも大きい」は、SELECT クエリが MAX_JOIN_SIZE システム変数で許可される最大サイズを超える結合内の行数を検査するように見積もっていることを示します。このエラーは通常、大規模なデータセットまたは複雑な結合操作を操作するときに発生します。

この問題を解決するには、次の手法を使用して SQL クエリを最適化できます。

  • Set SQL_BIG_SELECTS=1: PHP ユーザーの場合は、メイン クエリを実行する前に SQL_BIG_SELECTS=1 フラグを設定します。これにより、MySQL がより大きな結合サイズを処理できるようになります。
  • MAX_JOIN_SIZE を増やす: クエリがまだ最大サイズを超えている場合は、MAX_JOIN_SIZE 変数の値を増やします。これは、SET SQL_MAX_JOIN_SIZE=# 構文を使用して SQL ステートメント内で動的に実行できます。
  • WHERE 句を最適化します: WHERE 句が不要な行を効果的に除外し、結合条件が次のとおりであることを確認します。
  • インデックス付き結合を使用する: クエリのパフォーマンスを向上させるために、結合条件で使用される列にインデックスを作成します。

PHP の例:

<code class="php">$mysqli = new mysqli("localhost", "root", "password", "db");

$mysqli->query("SET SQL_BIG_SELECTS=1");  // Set it before the main query

$results = $mysqli->query("SELECT a, b, c FROM test");
while ($row = $results->fetch_assoc()) {
    echo '<pre class="brush:php;toolbar:false">';
    print_r($row);
    echo '
'; }

特定の環境に合わせてホスト、ユーザー名、パスワード、データベース名を必ず調整してください。

以上がMySQL の「SELECT は MAX_JOIN_SIZE を超える行を検査します」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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