Я расширил класс PDO для создания простого класса DB и в настоящее время использую prepare + execute для всех запросов, запускаемых в базу данных, даже те, у которых нет параметров (например, таблица SELECT * FROM).
Возникает вопрос: есть ли преимущество в производительности для использования PDO :: query для простых запросов, у которых нет параметров, а не для подготовки / выполнения?
Да, потому что, когда вы вызываете PDO::prepare
, сервер должен создать план запроса и метаинформацию для этого запроса, тогда есть дополнительные накладные расходы для привязки указанных параметров при использовании PDO::execute
. Таким образом, чтобы сохранить эти накладные расходы и повысить производительность, вы можете использовать PDO::query
для запросов без параметров.
Однако, в зависимости от масштаба и размера вашего приложения, а также от конфигурации сервера / хоста (общий / закрытый), вы можете или не видите никакого увеличения производительности вообще.
Существует заметная разница между любыми двумя способами в PHP. Вы должны оценить значение, которое каждый метод имеет для вас, и создать тестовые примеры, чтобы увидеть, стоит ли вам что-то делать так или иначе.