производительность: html <Select><option> генерация текста с использованием функции php -vs- извлечение готовых <option>значений из таблицы MySQL db - PullRequest
0 голосов
/ 24 февраля 2012

Список <select>...</select> содержит около 100 <options>.

<select>
<option value="GA">Atlanta</option>
<option value="NY">NYC</option>
...
<option value="DC">WashingtonDC</option>
</select>

Каким способом для производительности сервера гораздо лучше, чтобы эти 100 строк отображались как опции выбора:

  1. вызов функции php для назначения города для отображения для каждого штата в зависимости от значения параметра (функция php содержит массив городов для отображения) -ИЛИ-
  2. создать дополнительный столбец столиц в таблице БД в непосредственной близости от состояний.

Таким образом, используя метод 2., строки будут извлечены из БД с использованием 1 запроса SQL вместо 100-кратного вызова функции для каждой страницы. Я прав 2. намного лучше для производительности? (Сейчас используется метод 1.).

Спасибо.

Ответы [ 4 ]

1 голос
/ 24 февраля 2012

Это неправильный вопрос из неправильных предположений.

  • Спрашивать «работает ли функция php медленнее / быстрее» не имеет смысла. Функции PHP не быстрые и не медленные. все зависит от содержания функции.
  • Не задавайте себе вопросов о производительности, пока не столкнетесь с реальной проблемой.

Что касается вопроса, то хранение капиталов в базе данных является единственным надежным методом с точки зрения правильной структуры базы данных .

1 голос
/ 24 февраля 2012

Хранить заглавные буквы с состояниями в БД гораздо лучше, чем жестко кодировать заглавные буквы в массиве PHP и сохранять состояния в БД. Вы предотвратите ошибки, такие как обновление БД и не обновление кода PHP. Жесткое кодирование и использование функции для поиска, вероятно, будет незначительно быстрее (вы никогда не знаете, как интерпретатор PHP оптимизирует вызов).

Однако основная логика, которая включает цикл по множеству состояний и столиц, остается той же самой, поэтому сложность та же. И подход (1), как уже упоминалось, подвержен ошибкам.

1 голос
/ 24 февраля 2012

Предполагая, что в методе 1 вы вообще не обращаетесь к базе данных, а просто перебираете жестко закодированный массив в файле PHP, это должно быть быстрее.

В псевдокоде вариант 1 выглядит примерно так:

for each state
   render state select item
next state

В то время как вариант 2 будет выглядеть следующим образом:

retrieve states from DB
for each record in result set
   render state select item
next record

Вам все равно придется выполнить итерацию по 100 состояниям - кромевы получаете их из базы данных, а не из массива.

Однако на практике я сомневаюсь, что вы увидите огромную разницу;как уже упоминали другие, с точки зрения ремонтопригодности, хранение вещей в базе данных может быть лучшим выбором.

0 голосов
/ 24 февраля 2012

Я бы не помещал этот html-код в вашу БД.Многие хостеры имеют очень ограниченное пространство для вашей базы данных.

«правильный» способ сделать это - использовать какой-нибудь шаблонизатор, например Smarty , и использовать кэширование. см. Эту ссылку для документации

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