製品に特定のフィルターが適用されたすべての製品 ID を選択する MySQL クエリがあります。このクエリは機能しますが、このクエリを改善する方法を学びたいです。このクエリの代替案は、説明とともに歓迎されます。
kkx_products WHERE display = 'yes' AND id in kkx_products から kkx_products.id を選択
(SELECT product_id FROM `kkx_filters_products` WHERE `filter_id` in
(SELECT id FROM `kkx_filters` WHERE kkx_filters.urlname = "comics" OR kkx_filters.urlname = "comicsgraphicnovels")
count(*) = 2 の product_id でグループ化)
ORDER BY kkx_products.id desc LIMIT 0, 24
クエリで使用されているテーブルの構造を含めました。
説明しkkx_filtersます。
フィールド タイプ Null キー デフォルト エクストラ id int(11) unsigned NO PRI NULL auto_increment 名前 varchar(50) NO filtergroup_id int(11) はい MUL NULL urlname varchar(50) NO MUL NULL date_modified タイムスタンプ NO CURRENT_TIMESTAMP orderid float(11,2) NO NULL
説明しkkx_filters_productsます。
フィールド タイプ Null キー デフォルト エクストラ filter_id int(11) いいえ PRI 0 product_id int(11) いいえ PRI 0
説明しkkx_productsます。
フィールド タイプ Null キー デフォルト エクストラ
id int(11) いいえ PRI NULL auto_increment
タイトル varchar(255) いいえ
urlname varchar(50) NO MUL
説明 ロングテキスト NO NULL
price float(11,2) NO NULL
orderid float(11,2) NO NULL
imageurl varchar(255) いいえ
date_created 日時 NO NULL
date_modified タイムスタンプ NO CURRENT_TIMESTAMP
created_by varchar(11) NO NULL
modified_by varchar(11) NO NULL
製品番号 varchar(32) NO
instock enum('yes','no') いいえ はい
表示列挙型('yes','no') NO はい