Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

declarações preparadas emuladas vs declarações preparadas reais


Você está correto, declarações preparadas de verdade devem ser suportadas pelo servidor. Um preparado real significa consultar o banco de dados em duas etapas.

O primeiro passo consiste em enviar um modelo de consulta, que o servidor pode pré-compilar. O mecanismo de banco de dados também prepara com antecedência o plano de execução (principalmente quais índices serão usados ​​para atender a consulta real).

A segunda etapa é fornecer valores reais aos espaços reservados e executar a consulta real com esses parâmetros.

Isso normalmente permite a execução mais rápida de várias consultas semelhantes, porque 1. a consulta já foi pré-compilada (o plano de execução já está calculado) e 2. apenas os valores dos parâmetros são enviados posteriormente.

Uma consulta emulada é apenas um açúcar sintático, que permite apenas o envio mais fácil (não a execução mais rápida) de várias consultas sucessivas e semelhantes. Instruções SQL completas são enviadas ao servidor toda vez que uma consulta emulada é executada.

Quando o servidor não suporta instruções preparadas reais, ainda é recomendável usar instruções preparadas emuladas, porque o driver ainda cuida dos valores de escape para você, tornando a injeção de SQL menos provável.