Именованные параметры, кеширование и PDO - PullRequest
1 голос
/ 18 декабря 2008

Если у меня есть параметризованный оператор SQL, подобный этому:

SELECT * FROM table WHERE my_field = :field_value

Кто-нибудь знает, распознает ли PDO это (см. Ниже) как тот же оператор SQL и использует кеш вместо того, чтобы предполагать, что это совершенно другой оператор SQL:

SELECT * FROM table WHERE my_field = :new_field_value

Итак, я предполагаю, что вопрос заключается в следующем: если имя параметра изменится в параметризованном операторе выбора, но ничего больше не изменится, получу ли я все еще преимущество в производительности от кэширования? Или я должен убедиться, что имя параметра остается прежним?

Ответы [ 4 ]

4 голосов
/ 18 декабря 2008

Если вы используете PDO_MySQL, он самостоятельно переписывает подготовленные операторы в необработанный SQL до того, как сервер их увидит, если только вы не установите для PDO::ATTR_EMULATE_PREPARES значение false.

1 голос
/ 18 декабря 2008

Он должен распознаваться как тот же оператор, поскольку кэширование выполняется после замены параметров запроса значениями

0 голосов
/ 21 декабря 2008

Я не уверен, как PDO обрабатывает именованные параметры, но если он использует подготовленные операторы MySQL, вам нужно будет использовать MySQL 5.1.17 или более позднюю версию, если вы хотите использовать кэш запросов.

MySQL Query Cache

До MySQL 5.1.17 подготовленные операторы не использовали кэш запросов. Начиная с 5.1.17, подготовленные операторы используют кеш запросов при определенных условиях, которые различаются в зависимости от метода подготовки:

0 голосов
/ 18 декабря 2008

PDO не имеет кеша - MySql делает. И да, он будет кэшировать «последний» запрос в кеше запросов. Мало того, но если вы будете использовать одни и те же подготовленные операторы несколько раз, вы получите дополнительное увеличение скорости, поскольку MySql может кэшировать план выполнения запроса для этого оператора.

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