テーブルに適切なインデックスがある場合は、JOIN を使用したほうがよいかもしれませんが、ボトルネックの原因になることがよくあります。複数選択する代わりに、データを非正規化する方法を検討することもできます。ユーザーが複数のテーブルでカウントまたはタイムスタンプを更新する操作を実行する場合、それらのテーブルを結合する必要がなくなるため、「費用がかかりません」。
クエリのパフォーマンス チューニングに最適なツールは、EXPLAIN を使用することです。クエリの前に EXPLAIN と入力すると、スキャンされた行数を確認できます。目標は、数値が低いほど良いことです。つまり、インデックスが機能していることを意味します。もう 1 つは、インデックスを作成するときです。複数のフィールドで複合インデックスを使用し、WHERE 句に表示される順序で左から右に並べます。
たとえば、sometable に 10,000 行あるとします。
SELECT id, name, description, status FROM sometable WHERE name LIKE '%someName%' AND status = 'Active';
クエリの前に EXPLAIN を入力すると、一致するためにスキャンされた行数として 10,000 が返される場合があります。次に、複合インデックスを作成します。
ALTER TABLE sometable ADD INDEX idx_st_search (name, status);
その後、再度テーブルに対して EXPLAIN を実行すると、スキャンされた行数とパフォーマンスが大幅に向上したため、1 が返される場合があります。