Таблица поиска, магазин в MySQL или PHP - PullRequest
1 голос
/ 19 февраля 2011

У меня есть вопрос относительно производительности между таблицей поиска, хранящейся в 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 Тем не менее, я не знаю, как выбрать строки в определенном состоянии (я знаю, что он должен иметь другой метод, а не для цикла), так же как выбрать все возраст = 14 в другой массив.

Итак, какая из них имеет лучшую производительность? (Справочная таблица MySQL или PHP?)

Ответы [ 2 ]

3 голосов
/ 19 февраля 2011

Если вы знаете:

  • данные всегда будут статичными
  • что у вас будет только 100 строк
  • что вы будете когда-либо использовать простые однополевые совпадения в своих запросах
  • что вам никогда не понадобятся расширенные функции, такие как объединения
  • что вы собираетесь получить высокий трафик

... тогда я бы определенно поместил логику в чистый 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);
2 голосов
/ 19 февраля 2011

PHP будет определенно быстрее с точки зрения производительности.Но запрос будет трудно поддерживать код.Хранение данных в MySQL будет непосильным из-за сети.Но вы можете оптимизировать это, используя таблицы MyIASM и используя запросы, кэшированные на стороне сервера.

Мой голос за таблицу MyIASM в MySql с включенным кэшем запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...