MySQL-Queryに少しのパフォーマンス上の問題があり、正しい構築方法がわからないため、できるだけ努力しても機能しません。値が存在するかどうかの実行チェック
問題:
2列のテーブルを想像:ユーザー(INT)、アイテム(INT)
ユーザーが関連付けられたさまざまなアイテムを持っています。おそらく、user-1はitem-1、item-2、item-3、user-2にはitem-1、item-3、item-4があります。
私が知りたいのは、少なくとも1人の他のユーザーがこのアイテムを持っている場合、特定のユーザーXと各アイテムが別々のものであることです。私が始めた何
は
SELECT item
FROM table
WHERE item IN (SELECT item FROM table WHERE user = X) AND user != X
GROUP BY item
だった...しかし、一つ一つがすでに発見された場合は、この場合のクエリはその後も各項目のテーブル全体をチェックを通じて捜しますので、これは非効率的でした。 ユーザーXが実際に持っているアイテムの数がわからないため、クエリを制限できません。 LIMTI 1の検索クエリを各項目ごとに個別に送信することも良い考えではありません。
抽象化のために、アイテムX、...、アイテムYのセット(順不同または連続的な番号付け)が少なくとも1人のユーザーに関連付けられているかどうかを知りたいと言うこともできます。
私は、アイテムがまったく周りにいる頻度を気にせず、少なくとも1回は知りたいだけです。
これはどのように正しく行うことができますか? ありがとうございました!