「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL で「エラー 1104: SELECT は多すぎるレコードを検査します...」を防ぐにはどうすればよいですか?

MySQL で「エラー 1104: SELECT は多すぎるレコードを検査します...」を防ぐにはどうすればよいですか?

2024 年 11 月 14 日公開
ブラウズ:120

How Can I Prevent

MySQL: SQL_BIG_SELECTS の理解と管理

SQL_BIG_SELECTS は、システムに負担をかける可能性のある過度に拡張的なクエリの実行を防ぐ MySQL 構成オプションです。リソース。この記事では、SQL_BIG_SELECTS の微妙な違いを詳しく掘り下げ、関連するエラー メッセージ「

」を回避するための実用的な解決策を紹介します。「エラー 1104: SELECT はレコードが多すぎるため、おそらく非常に長い時間がかかります。 WHERE を使用し、SELECT が OK の場合は SET OPTION SQL_BIG_SELECTS=1 を使用します。"

1. MySQL はクエリを「大きな選択」とみなしますか?

クエリを「大きな選択」として分類するためのしきい値は、MySQL 変数 'max_join_size' によって決定されます。クエリがこの数を超える行をスキャンすると予測される場合、エラー メッセージが表示されます。 「show variables」を使用して、「max_join_size」.

2 の現在の値を確認します。インデックス作成で問題は解決しますか?

適切なインデックス作成と効率的な WHERE 句により、クエリで検査する必要がある行数を絞り込むことで、このエラーを軽減できます。

3 。 SQL_BIG_SELECTS は最後の手段ですか?

SQL_BIG_SELECTS は、大量のクエリが意図せず実行されるのを防ぐ保護手段として機能します。 MySQL 設定ファイルまたはサーバー起動時のコマンドライン オプションで有効にすることをお勧めします。

4.構成で SQL_BIG_SELECTS を有効にする方法

「my.cnf」ファイルまたはサーバーの起動時に SQL_BIG_SELECTS を「ON」に設定できます。別のオプションは、セッションで 'SET SESSION SQL_BIG_SELECTS=1' コマンドを使用することです。

5。他に代替手段はありますか?

直接的な代替手段はありませんが、クエリ自体が最適化され、必要なデータのみが取得されるように再検討する価値があります。さらに、より大きなクエリに対応するために、'max_join_size' 変数を手動で増やすことができます。

結論

SQL_BIG_SELECTS を理解し、適切に管理することは、MySQL クエリを効率的に実行するために重要です。インデックス作成、最適化されたクエリ、適切な構成設定などの推奨ソリューションを実装することで、関連するエラー メッセージを効果的に防止し、最適なパフォーマンスを確保できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3