что является более быстрым MySQL (Querys) или Php Switch операторов? - PullRequest
0 голосов
/ 17 декабря 2011

Мне было интересно, если кто-нибудь может указать мне в правильном направлении. Мне было интересно, что быстрее ... У меня есть ситуация с игрой, которую я создаю, где было более 630 000 комбинаций, и я хотел знать, будет ли мой скрипт искать базу данных для одного результата, будет быстрее большое заявление переключателя? .... эта игра, которую я создаю, (я надеюсь) будет хитом света, и я не хочу никаких проблем

<?php
// is this quicker 
mysql_query(....) - meanwhile remeber this table should have anywere from 600,000-630,000 rows
// or is this quicker
switch{
case --
....
case--
....
were here this will be in one page with anywwhere from 600,000 - 630,000 different case's ?
}
?>

Ответы [ 4 ]

2 голосов
/ 17 декабря 2011

php понадобится много времени, чтобы проанализировать страницу, что, вероятно, сделает ее медленнее, независимо от времени выполнения, которое может или не может быть медленнее (я думал, что и здесь запрос будет быстрее). Вы можете также рассмотреть ассоциативный массив вместо switch, если запрос может сделать это, но это не сделает разбор намного быстрее. И подумайте о потреблении памяти тоже.

И вы можете просто попробовать.

0 голосов
/ 17 декабря 2011

Хорошо, просто прочитайте это, возьмите или оставьте (не знаю, как выглядит ваша игра).

Если это игра / веб-сайт с большим трафиком (для многих пользователей), я бы разделил данные по крайней мере на две таблицы, одна из которых содержит только идентификатор, некоторую информацию о ГРУППЕ и то, что вы называете КОМБИНАЦИЕЙ. Все остальные дополнительные данные будут тогда во второй таблице, доступной через JOIN к этому идентификатору.

table 1
ID | GROUP | COMBINATION
1 | island | ABCDE
2 | house | FGHIJ

table2
ID | MORE INFO
1 | ...
2 | ...

Также я бы (если возможно) разделил эти ГРУППЫ на куски таблицы.

// ok, this is an example for ID and range of IDs, but I think you can get it
partition by range (id)
(
PARTITION P1 VALUES LESS THAN (10),
PARTITION P2 VALUES LESS THAN (20)
)

Логическое расщепление: - Нет необходимости создавать отдельные таблицы - нет необходимости перемещать порции данных между файлами

4 основных причины использования разделов: - сделать одиночные вставки и выборки быстрее - сделать выбор диапазона быстрее - чтобы помочь разбить данные по разным путям - эффективно хранить исторические данные - если вам нужно мгновенно удалить большие порции данных

0 голосов
/ 17 декабря 2011

PHP не использует таблицы переключателей для оптимизации выбора вариантов. Это было бы эквивалентно гигантскому оператору if-elseif-else ...

Для этого лучше использовать запросы к правильно проиндексированным таблицам.

0 голосов
/ 17 декабря 2011

Я почти наверняка согласился бы с запросом MySQL, особенно если таблицы проиндексированы правильно.Метод переключения будет очень трудно поддерживать - например, что, если кому-то, кроме вас, нужно добавить новую комбинацию для переключателя?

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