Что быстрее: конкатенация строк на уровне базы данных или на уровне приложения? - PullRequest
3 голосов
/ 06 марта 2012

У меня есть простой запрос в DQL, который выбирает 3 столбца:

        $qb->select("c.zip_code, c.name, s.state")
           ->where("c.zip_code LIKE :input"); 

Мой желаемый вывод -

"[c.zip_code], [c.name],[s.state] "

В настоящее время я объединяю строки на уровне PHP, чтобы получить нужную строку.

Это быстрее сделать на уровне базы данных, используяфункция CONCAT () ?

Ответы [ 6 ]

6 голосов
/ 06 марта 2012

Это не тот момент, когда оптимизация актуальна. Вы должны быть уверены в том, какой из них более читабелен / практичен, лично я бы сделал это на уровне PHP.

3 голосов
/ 06 марта 2012

Такая логика принадлежит слою отображения вашего приложения, а не базе данных.

1 голос
/ 06 марта 2012
  1. Я бы позволил базе данных выполнять тяжелую работу и объединять данные, хотя это может не иметь большого значения для небольших приложений, для больших приложений сценарий приложения может начать попадать в пороги памяти.

  2. Что произойдет, если вам нужно показать одинаковые данные в другом месте, скопировать и вставить код или использовать тот же запрос?

В итоге, производительность может быть такой же сейчас, но более важные вопросы, такие как повторное использование кода, простота изменений.

1 голос
/ 06 марта 2012

Я хочу перейти на уровень mysql, почему мы должны позаботиться об этой манипуляции, где mysql предоставляет встроенную функцию для этого, на мой взгляд, MYSQL, и оба, вероятно, занимают одно и то же время

0 голосов
/ 25 ноября 2014

Вы можете масштабировать серверы PHP легче, чем серверы MySql.Например, в AWS вы можете создать условия автоматического масштабирования, которые будут увеличивать / уменьшать экземпляры вашего PHP-сервера.

0 голосов
/ 06 марта 2012

При двух равных вариантах, которые, я полагаю, у вас есть в этом случае, я буду использовать фактор риска для принятия окончательного решения.

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

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

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