我对存储在MySQL(独立表)或PHP(数组)中的查找表之间的性能有疑问,所以这是我的数据(以数组形式)
$users = array(
array(name => 'a', address => 'abc', age => '14'),
array(name => 'b', address => 'def', age => '12'),
array(name => 'c', address => 'ghi', age => '13'),
array(name => 'd', address => 'jkl', age => '14'),
array(name => 'd', address => 'mno', age => '11'),
);
这是Facebook平台上的游戏,可能有很多人同时访问的机会。
实际上,表应该有~100行,但是所有数据都是静态的,如果所有数据都存储在MySQL中,我可以轻松做任何“选择”,考虑对MySQL进行太多查询,因此我考虑存储在php数组中但是,我不知道如何在特定条件下选择行(我知道它应该有其他方法而不是循环),就像选择所有age = 14 in到另一个数组一样。
那么,哪一个有更好的表现? (MySQL或PHP查找表?)
答案 0 :(得分:3)
如果您知道:
...然后我肯定把逻辑放在纯PHP中。 “删除不必要的数据库查询”始终是提高性能的第一步,并且将这些简单的行丢弃到MySQL中,除了你不想写一个简单的foreach循环之外没有其他原因这是一个坏主意,我认为。这太过分了。如果你正在使用像APC这样的操作码缓存(你是谁,对吗?)那么我认为性能比较甚至不会接近。 (虽然我总是建议你自己对它们进行基准测试以确定。)
class Users
{
protected $_users = array(
array('name' => 'a', 'address' => 'abc', 'age' => '14'),
array('name' => 'b', 'address' => 'def', 'age' => '12'),
array('name' => 'c', 'address' => 'ghi', 'age' => '13'),
array('name' => 'd', 'address' => 'jkl', 'age' => '14'),
array('name' => 'e', 'address' => 'mno', 'age' => '11')
);
public function select($field, $value)
{
$list = array();
foreach ($this->_users as $user) {
if ($user[$field] == $value) {
$list[] = $user;
}
}
return $list;
}
}
$users = new Users();
$list = $users->select('age', 14);
答案 1 :(得分:2)
PHP在性能方面肯定会更快。但是查询将很难维护代码。由于网络原因,在mysql中保存数据将是一个开销。但您可以通过使用MyIASM表并使用服务器端缓存的查询来优化它。
我的投票是针对启用了查询缓存的MySql上的MyIASM表。