我对存储在 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数组中,但是,我不知道如何在特定条件下选择行(我知道它应该有其他方法而不是for循环),就像选择所有age = 14到另一个数组中一样。
那么,哪一个的性能更好呢? (MySQL 还是 PHP 查找表?)
最佳答案
如果你知道:
- 数据始终是静态的
- 您只有 100 行
- 您只会在查询中使用简单的单字段匹配
- 您永远不需要连接等高级功能
- 您将获得高流量
...那么我肯定会把逻辑放在纯 PHP 中。 “删除不必要的数据库查询”始终是提高性能的第一步,我认为,仅仅因为不想编写简单的 foreach 循环而将这些简单的行放入 MySQL 中是一个坏主意。 。这太过分了。如果您使用像 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);
关于php - 一个查找表,存储在 MySQL 或 PHP 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052121/