嗨,只是一个简单的问题
我需要将数据存储到数据库,现在有2个选项可以显示
数据:a,b,c,d
1.将a,b,c,d存储在1列中,仅在需要时查询并在应用程序中执行拆分
2.将a,b,c,d存储到4个不同的列中,可以直接从数据库中查询
哪个选项更好?我关心的是将其分为4个不同的列,这会使表包含许多列,这会降低性能吗?我也很好奇,查询是否可能很快,但是向我的应用程序的数据传输却很慢?
最佳答案
MySQL性能是一个复杂的主题。针对您提出的问题:
我的担心是将其分为4个不同的列将使表
包含许多列,是否会降低性能?
从性能的角度来看,并没有比4列或10列,20列或50列本质上更糟的列。
话虽如此,有些事情可能会影响性能,如果您不了解它们,可能会影响性能。例如,如果您SELECT * FROM {my_table}
实际上只需要SELECT a FROM {my_table}
...是的,那将会影响您的性能(尽管根据您的缓存策略,有很多参数支持SELECT * FROM {my_table}
)。
同样,您将要考虑LIMIT语句。对你的问题
而且我很好奇,查询是否可能很快,但是
将数据传输到我的应用程序很慢?
当然是。如果您只需要50行并且表有50000,则您想在SQL语句中添加限制子句,否则您将通过网络发送比所需更多的数据。内存比磁盘快,磁盘比网络快。如果您通过不必要的方式发送大量数据,则最好相信这会导致性能问题。但是,再次提醒您,这与您有多少列无关。表格中的列数绝对没有任何内在因素会影响性能(至少不会影响您正在讨论的规模以及您考虑的方式)
总而言之,性能是一个复杂的话题。如果您有兴趣,应该看看它。听起来a,b,c和d在逻辑上是不同的列,因此您可能应该继续将它们存储在MySQL的不同列中。希望这可以帮助。
关于mysql - 多列或单列的MySQL数据库设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28480766/