PHP и Postgres: представление против SELECT, когда использовать представление? - PullRequest
1 голос
/ 17 июля 2009

Относится к моему предыдущему вопросу: PHP и базы данных: производительность представлений, функций и хранимых процедур Просто чтобы задать более конкретный вопрос относительно больших запросов SELECT.

Когда было бы удобнее использовать View вместо написания запроса SELECT в коде и вызова его:

 $connector->query($sql)->fetchAll();

Какие факторы следует учитывать при принятии решения, лучше ли использовать представление или просто оставить его как есть. Скажем, если вы объединяете несколько таблиц, выбираете определенный объем данных и т. Д.

Я спрашиваю в контексте большого веб-приложения (с PHP и Postgres) и ищу производительность и оптимизацию.

1 Ответ

1 голос
/ 17 июля 2009

При использовании исходного кода + представлений PHP (вместо только исходного кода PHP) нужно учитывать одну вещь: теперь у вас есть два вида источников, которые можно изменить при обновлении приложения:

  • вы должны поместить новые исходники PHP на сервер
  • и вы должны обновить представления

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

Что-то еще, что вам, возможно, придется рассмотреть, - версионирование: PHP-скрипты версионирования очень просты: просто используйте SVN и все в порядке, поскольку это текстовые файлы. С представлениями, чтобы получить тот же вид версионирования, вы должны работать в текстовых файлах (переданных в SVN, прежде чем обновлять их на рабочем сервере БД), и поддерживать их в синхронизации с сервером БД - кажется простым, но это не тогда, когда вам нужно отправить аварийный патч в производство ^^

Personnaly, я обычно использую представления / хранимые процедуры, когда это действительно делает различие: например, если для вычисления потребуются тысячи SQL-запросов (и, таким образом, тысячи вызовов из PHP, ожидание ответа и т. Д.) ) или слишком много обменов данными между двумя серверами, использование сохраненного процесса может быть очень полезным!

(Никогда не использовал postgre, но идея аналогична другим продуктам)

...