如何从 MySQL 表中的逗号分隔字符串中拆分关键字并为后查询创建有效的关系?

DDD
发布: 2024-10-31 08:39:30
原创
290 人浏览过

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

使用 PHP 和 MySQL 拆分帖子的关键字

在这种情况下,我们将有效地拆分存储在表的单列中的关键字,并将它们分布在两个新表中,确保数据完整性并优化查询。

背景:
我们有一个名为“post_tags”的表,其中包含帖子 ID (post_id) 和相应的标签 (tags_csv) ) 以逗号分隔。我们的目标是创建两个额外的表:“keywords”用于存储唯一关键字,“post_keywords”用于将关键字与帖子关联起来。

优化解决方案:
我们可以利用 MySQL 的存储过程才能高效地完成这项任务。 “normalise_post_tags”过程仔细地迭代帖子标签,提取关键字,并将它们插入到“keywords”表中。然后,它将关键字与“post_keywords”表中的帖子 ID 相关联。

实现详细信息:

  1. 数据准备:

    • 使用帖子 ID 和标签创建“post_tags”表。
    • 使用关键字名称的唯一键创建“keywords”表。
    • 创建“ post_keywords' 表,其复合主键为 keywords_id 和 post_id。
  2. 存储过程:

    • 'normalise_post_tags'过程使用游标迭代“post_tags”表。
    • 它通过以逗号分隔“tags_csv”字符串、修剪关键字并将其插入到“keywords”(如果不存在)来识别关键字。
    • 该过程获取每个关键字的keyword_id(如果关键字已经存在,则检索ID)并将关联存储在“post_keywords”表中。
  3. 执行:

    • 执行'normalise_post_tags'过程来执行分割和插入。

优点这种方法:

  • 效率:通过使用存储过程,我们消除了重复的连接和执行开销,从而显着提高了性能。
  • 数据完整性:“post_keywords”表中的复合主键确保关键字和帖子关联是唯一的。
  • 优化查询:“post_keywords”中的聚集复合主键允许对关键字帖子关系进行高效查询。

用法示例:

用数据填充“post_tags”表后,执行“normalise_post_tags”过程将创建“keywords”和“post_keywords”表,以优化的方式拆分关键字与帖子并将其关联起来。

以上是如何从 MySQL 表中的逗号分隔字符串中拆分关键字并为后查询创建有效的关系?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!