资源密集程度更低,速度更快?
情景1:
在MySQL中存储10列INT值
场景2: 仅在一列中存储Int值并使用PHP中的substr()获取单独的INT值以进行进一步处理?
答案 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";