哪个更快,资源更少?在MySQL中使用更多行或使用PHP中的substr

时间:2014-12-18 19:06:33

标签: php mysql performance substr

资源密集程度更低,速度更快?

情景1:

在MySQL中存储10列INT值

场景2: 仅在一列中存储Int值并使用PHP中的substr()获取单独的INT值以进行进一步处理?

2 个答案:

答案 0 :(得分:3)

易于回答:

使用INT列...

1 INT列需要4个字节,并且可以存储从-2147483648到2147483647的值(注意:10位数)

VARCHAR列中的4个字节(假设您正在引用的内容)仅存储4位数(或更少,具体取决于您使用的编码)

如果您不想为INT使用4个字节,则可以使用其他类型。见http://dev.mysql.com/doc/refman/5.0/en/integer-types.html

至于速度......差异可以忽略不计,只是过早优化。 (我认为你建议的substr方法总是比较慢,substr的成本是O(N),而正确索引的表查找是O(log N),不管#列)

我自己的偏好始终是灵活性,因此使用单独的INT列,您永远不知道是否要对每个列进行排序/过滤/汇总。

答案 1 :(得分:0)

不是您问题的直接答案,而是测试执行速度的最佳方法:

<?php
$time_start = microtime(true);

// YOUR CODE TO BENCHMARK HERE

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Took $time seconds\n";