現在のプロジェクトにウォッチリスト機能を実装しようとしています。この機能では、ユーザーはアイテムをウォッチリストに追加できます。
したがって、アイテムをウォッチリストに追加するまでは正常に機能しますが、特定のカテゴリのすべてのアイテム (ウォッチリストにあり、ウォッチリストにないもの) を表示する場合、ユーザーのウォッチリストにアイテムが含まれているかどうか、および含まれていないかどうかを確認する必要があります。ウォッチリスト ウォッチリストに追加するボタンを表示する必要があります.....既にウォッチリストにある場合は、それを削除するボタンです。
だからここに私は次のテーブルを持っていました
ウォッチリスト表
item-id(int)
ユーザー名
追加日 (ウォッチリストへ)
アイテムテーブル
item-id(int)
アイテム名
アイテム説明
追加日
ユーザーテーブル
ユーザー名
fname
lname
joinDate
現在、ユーザーがアイテムページにアクセスすると、多数の mysql クエリがあり
ます ユーザーチェック用のクエリが 1 つ (ログインしている場合は、ページの上部でユーザー名を取得します)記事を表示するためのクエリ
が 1 つ (カテゴリフィルターを使用)アイテムがウォッチリストに。
ループ内でクエリを使用して、ウォッチリストテーブルからユーザー名とアイテム ID のペアをチェックし、アイテム IDを取得して、それを現在の記事と比較し、ウォッチ リストにあるかどうかを判断します (悪い方法だとわかっています ...しかし、私は初心者なので、最初はそれを使用しました)
ページごとに20個のアイテムが表示されている場合、30個のアイテムの場合は20個のクエリがあり、30個のクエリなど....だから私はそれを最適化する方法を理解し始めました.
私が実装しようと考えていた1 つの方法は、配列への 1 つのクエリでウォッチ リストテーブル内のすべてのアイテム IDを取得し、アイテムをページに出力して適切に出力する前に php in_array()を使用してチェックすることです。今のところは問題ありませんが、私は初心者なので、クエリを最適化するためのベスト プラクティスを学びたいと思っています。
結合を使用することを提案する人もいるかもしれません.......しかし、私はこのシナリオでそれらを使用する方法がわかりません。シナリオ
よろしく
お願いします