ホームページ >データベース >mysql チュートリアル >データベース内の複数のタグに一致するコンテンツを効率的に見つけるにはどうすればよいですか?
複数のタグの交差部分の検索
データベース クエリの領域では、一連の基準に一致するコンテンツを検索することが必要になることがよくあります。一般的なタスクの 1 つは、複数のタグの交差部分を取得することです。サブクエリはオプションですが、多数のタグを扱う場合、扱いにくく非効率的になる可能性があります。
より良いアプローチ: IN および GROUP BY を使用する
より効率的なアプローチには、IN 演算子と GROUP BY 句が含まれます。 IN 句内で関連するタグ ID を指定すると、それらのタグを含む行をタグ テーブルから選択できます。その後、GROUP BY を使用して、contentID 列ごとに結果をグループ化できます。これにより、重複を排除し、すべてのタグ基準を満たす一意のコンテンツを判断できます。
クエリの変更
これを使用して提供された疑似コードを変更するにはアプローチ:
SELECT DISTINCT contentid FROM tags WHERE tagid IN (334, 338, 342) GROUP BY contentid
一般化
このアプローチは、IN 句を適宜更新することで、任意の数のタグに対して一般化できます。たとえば、n 個のタグの交差部分を見つける必要がある場合:
SELECT DISTINCT contentid FROM tags WHERE tagid IN (tag1, tag2, ..., tagn) GROUP BY contentid
HAVING 句の拡張
一般化されたケースでは、次を使用してクエリをさらに拡張できます。 HAVING 句:
SELECT DISTINCT contentid FROM tags WHERE tagid IN (...) --taglist GROUP BY contentid HAVING COUNT(DISTINCT tagID) = ... --tagcount
HAVING 句を使用して、内容が目的の数値と一致することを確認します。タグの数を増やすと、より正確な結果が得られます。
以上がデータベース内の複数のタグに一致するコンテンツを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。