2014-09-03 33 views
0

我需要一些关于逗号分隔值和SQL性能的建议。关于大量逗号分隔数据的一些建议

问:如果我在单个表上有1M逗号分隔的记录,那么在分割值时是否会出现主要性能问题? (显然,在1M记录上运行视图时会出现性能问题)。

问:如果逗号分隔不好,还有其他替代方案可以处理这种性质的信息吗? (这些数据将用于过滤和显示管理仪表板上的其他信息)。

任何建议将是伟大的。

+1

**是**,逗号分隔字符串可怕,他们违反连**第一范式**数据库设计的,他们回来困扰你,他们从你的系统性能吸 - 尝试尽可能避免它们! **真正的解决方案**将使用适当的**表**来保存1-n条目 - 这就是关系数据库擅长的地方! – 2014-09-03 06:44:50

+0

@marc_s检查这种情况 - 大量的记录(ID)被不断插入表中,并且在每个插入记录中,大于20分钟的记录被删除。当表变大(超过2500万条记录)时,删除操作开始花费太多时间。我们尝试使用批量删除,创建适当的索引等。没有任何帮助优化删除。然后我们尝试使用带有ID的'CSV'插入一条记录。提取100 000行或100 000个ID并将它们转换为行之间的差异为1秒,但删除延迟固定。 – gotqn 2014-09-03 07:39:48

回答

0

如果我在单个表上有1M逗号分隔的记录,那么在分割这些值时是否会出现主要性能问题?

是的,你说得对。使用它不是一个好主意。尽量避免这种情况。

除了存储逗号分隔值之外,还可以使用一个表来逐行保存所有值,而不是将逗号分隔存储在一行中。它会提高系统的性能,并且它将用于发明数据库的目的。

0

我不确定你的意思是“这种性质的信息”。如果信息是一致的,那么你应该使用一个标准的关系表。另一方面,如果数据是异构的(混合,不一样),也许根据需求逐行变化,那么你可以考虑使用xml,它可以被索引。例如;下面的两个csv行可以表示,而不是如xml列中所示。这只是实现此目的的一种方式,但它以可索引的方式显示了使用xml结构化但异构数据的方式。