ホームページ >データベース >mysql チュートリアル >MySQL テーブル内のカンマ区切りの文字列からキーワードを分割し、クエリ後の効率的な関係を作成するにはどうすればよいですか?

MySQL テーブル内のカンマ区切りの文字列からキーワードを分割し、クエリ後の効率的な関係を作成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-31 08:39:30387ブラウズ

How can I split keywords from a comma-separated string in a MySQL table and create efficient relationships for post querying?

PHP と MySQL を使用した投稿のキーワードの分割

このコンテキストでは、テーブルの 1 つの列に格納されているキーワードを効率的に分割し、それらを 2 つの新しいテーブルに分散し、データの整合性と最適化を確保します。

背景:
「post_tags」という名前のテーブルがあり、投稿 ID (post_id) と対応するタグ (tags_csv) がカンマで区切られて含まれています。私たちの目標は、一意のキーワードを保存するための 'keywords' とキーワードを投稿に関連付ける 'post_keywords' の 2 つの追加テーブルを作成することです。

最適化されたソリューション:
MySQL のストアド プロシージャを利用できます。このタスクを効率的に達成するために。 「normalise_post_tags」プロシージャは、投稿タグを注意深く繰り返し、キーワードを抽出して「キーワード」テーブルに挿入します。次に、キーワードを「post_keywords」テーブルの投稿 ID に関連付けます。

実装の詳細:

  1. データの準備:

    • を作成します投稿 ID とタグを含む 'post_tags' テーブル。
    • キーワード名の一意のキーを含む 'keywords' テーブルを作成します。
    • keyword_id とキーワードの複合主キーを含む 'post_keywords' テーブルを作成します。 post_id.
  2. ストアド プロシージャ:

    • 「normalise_post_tags」プロシージャは、カーソルを使用して「post_tags」を反復処理します。 table.
    • キーワードを次のように識別します。 「tags_csv」文字列をカンマで分割し、キーワードをトリミングし、存在しない場合は「keywords」に挿入します。
    • このプロシージャは、各キーワードのkeyword_idを取得します(キーワードがすでに存在する場合はIDを取得します)。 ) と関連付けを「post_keywords」に保存しますtable.
  3. 実行:

    • 「normalise_post_tags」プロシージャを実行して、分割と

このアプローチの利点:

  • 効率: ストアド プロシージャを使用することによる、繰り返しの接続と実行のオーバーヘッドが排除され、大幅に改善されます。パフォーマンス。
  • データの整合性: 「post_keywords」テーブルの複合主キーにより、キーワードと投稿の関連付けが一意であることが保証されます。
  • 最適化されたクエリ: 「post_keywords」のクラスター化された複合主キーにより、キーワードポストに対する効率的なクエリが可能になります

使用例:

'post_tags' テーブルにデータを設定した後、'normalise_post_tags' プロシージャを実行すると、'キーワード' と ' post_keywords のテーブル。最適化された方法でキーワードを分割して投稿に関連付けます。

以上がMySQL テーブル内のカンマ区切りの文字列からキーワードを分割し、クエリ後の効率的な関係を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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