Это плохо, чтобы подготовить заявление несколько раз? - PullRequest
1 голос
/ 13 апреля 2011

Обычно вы готовите оператор, а затем отправляете другие значения только тогда, когда выполняете его внутри циклов.

Но я видел код MVC, где операторы готовятся, например, для каждого вызова метода обновления. Итак, мой вопрос - это ухудшает производительность? И если да, то сколько? Это хуже или все же лучше, чем не готовить заявления в первую очередь? Или PHP и / или MySQL понимают это и готовят его только один раз?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Некоторые базы данных и серверы приложений кэшируют подготовленные операторы на стороне клиента и понимают, что вы пытаетесь подготовить оператор, который уже был подготовлен, и передаете ссылку на pstmt из кэша. Это очень часто встречается на серверах приложений Java, но не так распространено в PHP.

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

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

0 голосов
/ 13 апреля 2011

Я сомневаюсь, что PHP и / или MySQL такие умные.Так что, AFAIK, это ухудшает производительность, так как делает дополнительный обход в базу данных, , но я сомневаюсь, что вы когда-нибудь заметите это.

...