mysql - 如何在mysql表中存储多个值

标签 mysql

这可能是一个愚蠢的问题,但我希望有人能给出答案或知道如何解决我的问题。我有存储在 xml 文件中的 cdr/调用详细记录,并且根据调用类型,它们在每次调用中看起来都不同。 例如

<Features> 
<Feature>UnconditionalCallForwarding</Feature> 
<Feature>LegPartOfForwardedCall</Feature> 
</Features>

此调用有 2 个在调用时使用的功能,但它可能是 3 个甚至 4 个。我不会创建一个单独的表来存储调用的功能,因为插入额外的记录也会清理这些功能是一个性能问题记录被回收后的表。我们在这里谈论的是每天 100 万条以上的记录,因此性能是一个问题。 所以我想知道将列表存储在带有某种分隔符的 txt 中是否有意义,我可以在 sql 查询中轻松解析它。

最佳答案

使用多个表。不要在 sql 字段中存储分隔文本,它会破坏关系表结构的目的,并产生额外的工作。

您拥有的是一对多关系。处理它的最佳方法是拥有第二张 table 。试试这个例子:

表:CallFeatures 列:Id、CallId、FeatureName

将 CallId 设为 Calls 表的外键。然后,您只需在查询调用时加入表即可获取功能。

注意:如果您在执行 JOIN 查询时有多个功能,您将获得多行。如果您想将结果格式化为报告或其他输出格式,则需要进一步调查。这只是一种解析和存储特征的方法。

关于mysql - 如何在mysql表中存储多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49262807/

相关文章:

sql - sql right join的区分结果

mysql数据库在golang中报错【sql : database is closed】

mysql替换一个空值

java - 错误 1126 (HY000) : Can't open shared library 'lib_mysqludf_sys.dll' (errno: 126) The specified module could not be found. )

mysql - 获取最后插入的mysql行的id

c# - asp.net检查重复并将数据插入sql

php - 如何在PHP中获取数组中的唯一值

来自mysql的php名称拼写更正

php - 想要在使用 php 从 mysql 中删除行之前放置警告触发器

php - 如何对以下 PHP mysql_* 代码执行 SQL 注入(inject)?