ユーザーが購入したアイテムのテーブルがあり、そのテーブル内にカテゴリ識別子があります。そこで、同じテーブルから、すでに購入したのと同じカテゴリの他のアイテムをユーザーに表示したいと思います。
私が試しているクエリは実行に22秒以上かかり、メインアイテムテーブルは3000行にもなりません...なぜそれほど非効率的なのですか?インデックスを作成する必要がありますか?その場合、どの列にインデックスを付けますか?
クエリは次のとおりです。
select * from items
where category in (
select category from items
where ((user_id = '63') AND (category <> '0'))
group by category
)
order by dateadded desc limit 20