SELECT products.*
FROM products
LEFT JOIN product_category
ON products.id_product = product_category.id_produs
LEFT JOIN categories
ON product_category.id_category = categories.id_category
INNER JOIN options
ON products.id_product = options.id_product
WHERE categories.id_category = '472'
AND product_category.id_category = categories.id_category
LIMIT 0, 20
こんにちは、私はプログラミング コンテスト用の e コマース Web サイトに取り組んでおり、製品がリストされるカテゴリ ページに問題があります。
MySQL には、products、category、product_category (category と products の関係を含む)、および options の 4 つのテーブルがあります。オプション テーブルには、購入を選択できる製品のさまざまな属性 (重量、高さ、色など) が含まれています。製品フィルターがあるため、カテゴリ ページでこれらを呼び出す必要があります。色: 赤を選択すると、属性色: 赤のすべての製品が表示されます。
製品テーブルに 10,000 行あり、各製品に 5 つのオプションがある場合、オプション テーブルには 50,000 行があり、問題はクエリが非常に遅くなり、製品を表示するのに 30 秒以上かかることです。 . 問題はクエリにあると確信していますが、その作成方法はわかりません。ページ上の商品を 5 秒以内に取得するには、クエリに何を記述すればよいですか?