ほとんどすべての SQL と同様に、実際にはさまざまな要因に依存します。
一般に、1 つのテーブルに対するクエリは、2 つのテーブルに対するクエリよりもパフォーマンスが向上する可能性があります。
「category_name」に比較的短い値 (8 文字以下など) を使用し、先頭の列として適切なインデックス category_name を使用すると、次のようなクエリのパフォーマンスが向上します。
SELECT * FROM websites WHERE category_name = 'movies' ORDER BY category
最適なパフォーマンスを得るには、ENUM
category_name の列を検討してください。ただし、これは、の値がcategory_name
列定義の一部として「固定」されることを意味します。
個別の category_name 値のリストを取得する必要がある場合 (ドロップダウン リスト ボックスなど)、別のテーブル (この例では Categories テーブルなど) が優先されます。
大きな問題は、「カテゴリ」がシステム内のエンティティであるかどうかです。つまり、ビジネスにとって重要であり、一意に識別でき、情報を保存する必要がある人、場所、物、概念、またはイベントの「カテゴリ」です。
もしそうなら、それは「エンティティ」であり、別のテーブルを作成したいと考えています。
考慮すべきより大きな問題は、Web サイトとカテゴリの関係です。Web サイトに複数のカテゴリを設定できますか?
その場合は、Web サイトとカテゴリを関連付ける関係テーブルの観点から考える必要があります。例えば:
website_category (website_id, category_id)
"エンティティ" とエンティティ間の "関係" がデータベース設計で適切に表現されていることが重要です。パフォーマンスを最適化するために微調整する前に、まずそれが正しいことを確認してください。