ホームページ >データベース >mysql チュートリアル >データベース内のカンマ区切り列からユーザー名を効率的に取得するにはどうすればよいですか?

データベース内のカンマ区切り列からユーザー名を効率的に取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-17 13:32:18713ブラウズ

How Can I Efficiently Retrieve Usernames from a Comma-Separated Column in a Database?

カンマ区切り列からのユーザー名の抽出

複数のテーブル tblA (ユーザー)、tblB (ユーザー名)、および tblC (カンマ区切りのユーザー ID を使用した命名法)。目標は、特定の命名規則の値を検索するときにすべてのユーザー名を取得することです。

既存のアプローチと制限

提供されたクエリは、クロス結合と部分文字列関数の使用を試みます。カンマ区切り値から最初の userID を抽出します。ただし、このアプローチは非効率的であり、命名法に複数のユーザー ID が関連付けられている場合には正確な結果が得られません。

正規化されたスキーマと改善されたクエリ

を行うことをお勧めします。ジャンクション テーブルを導入してデータベース スキーマを正規化します。 tblC_user テーブルには、c_id (tblC を参照) と userID (tblB を参照) の 2 つの列が含まれている必要があります。これにより、tblC でカンマ区切りのユーザー ID が必要なくなります。

次のクエリは、正規化されたスキーマを使用してユーザー名を抽出する方法を示しています。

SELECT *
FROM tblC c
JOIN tblC_user cu ON (c.id = cu.c_id)
JOIN tblB b ON (b.userid = cu.userid)
WHERE c.nname = "new1";

このクエリは、関連付けられたすべてのユーザー名を効率的に取得します。 「new1」命名法を使用します。

の利点正規化

データベース スキーマを正規化すると、次のような利点があります。

  • データの整合性と精度の向上
  • クエリの高速化と処理時間の削減
  • データの保守と変更の簡素化
  • カスケード関係子の記録を維持するため

以上がデータベース内のカンマ区切り列からユーザー名を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。