这两个选项中哪一个会表现更好?

时间:2013-11-13 02:24:39

标签: php mysql

在MySQL中,哪两个选项的表现会更好?

a)一排,有5个柱子,一个大(50kb)和4个小(500b)。

b)两行,一行有4列,一行有1。

PHP非常频繁地读取行,但只需要小列信息。

1 个答案:

答案 0 :(得分:0)

除非您实际上选择大栏目,否则除了对查询产生一点影响外,它不太可能有任何其他内容。

如果记录中的小行不连续(多个磁盘读取以从数据部分获取列),或者如果它是使用的密钥的一部分,则可能存在一些最小效果提取数据(多个磁盘读取以提取密钥),但这可能在所有其他可能的性能影响旁边变得微不足道。

我的建议是遵循第三范式而只关注性能,如果它变得明显(只有 它变得明显时 - 请参阅YAGNI)。

如果大列自然是基于3NF的行的一部分,那么它通常应该去的地方,而不是单独的表。将其单独放入一个单独的表中的问题是,您需要它的查询以及至少其中一个列将受到影响,因为您必须进行连接。

在任何情况下,如果你真的想知道解决方案A或B哪个更快/更小/更好/更强/更优雅,你需要测量而不是猜测(或问我们) )。

这涉及在可能的目标环境中尝试两种解决方案,并实际评估它们的执行方式。而且,最重要的是,如果您的数据不是您的架构都没有发生变化,那么数据库调优只是一种“一劳永逸”的操作。这两者中的任何一个的变化都可能使您以前的基准无关紧要。