products
カテゴリを含む製品の詳細を含むテーブルを考えてみましょう。1 つの製品が複数のカテゴリに属している可能性があるため、カテゴリ ID のコンマ区切りリストとして保持しています。
私はこれが正規化されたアプローチではないことを知っています。
MYSQL の専門家なら、特定のカテゴリの製品を選択するのにどのアプローチが速いか教えてもらえますか?
正規化されたアプローチを取る場合、明らかにproducts
、テーブルとテーブルを結合する必要があります。products_category_relation
と
私のアプローチでは、製品を見つけるために like クエリを作成する必要があります (カテゴリ ID 10 を検索していると仮定します)。
SELECT p.*
FROM products p
WHERE p.category like '10'
OR p.category like '10,%'
OR p.category like '%,10'
OR p.category like '%,10,%'
このアプローチの方が速いのか、それとも JOIN アプローチの方が速いのか教えてもらえますか?
正規化については知っています。私は自分のアプローチに伴う他のリスクについて知っています。しかし、私の場合は問題ではありません。なので、気になるのは速度です。
その速度または実際のテスト結果に関する理論的な説明は大歓迎です。
アップデート
myISAM エンジン製品テーブルを使用していますが、テーブルの列に主キー フルテキストproduct_id
インデックスがありますcategory
products