MySQL の WHERE 句でのサブクエリの回避: COUNT(*) の最適化
MySQL で大規模なデータセットを操作する場合、パフォーマンスの最適化が重要です。一般的なシナリオの 1 つは、WHERE 句で COUNT(*) を使用することですが、これはリソースを大量に消費する可能性があります。この記事では、サブクエリに頼らずにクエリ効率を向上させる代替ソリューションを検討します。
問題:
カウントが含まれる 'gd' テーブルから個別の値を取得したいと考えています。通常、これは次のようなクエリを使用して実現されます。
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
ただし、このアプローチには、WHERE 句内でコストのかかるサブクエリが含まれます。
解決策:
サブクエリを使用する代わりに、GROUP BY 操作の後に HAVING 句を利用します:
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
説明:
このアプローチにより、WHERE 句でサブクエリを実行するオーバーヘッドが排除され、クエリのパフォーマンスが大幅に向上します。
以上がサブクエリを使用せずに MySQL で COUNT(*) クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。