2010-08-05 11 views
6

Hice algunas pruebas, primero probé la declaración preparada de mysql con $pdo->prepare() y $insert_sth->execute() para inserciones de 10k (con parámetros nombrados si es importante), y tomó 301s.MySQL sentencias preparadas vs consultas simples rendimiento

Después de eso hice simples consultas de inserción e insertando cada vez para las mismas inserciones de 10k también y tomó 303s.

Así que me gustaría saber: ¿las declaraciones preparadas realmente dan beneficios de rendimiento? ¿Porque mis pruebas no lo demostraron, o tengo que optimizar mi versión de declaraciones preparadas para que sean más rápidas?

Puedo dar mi código fuente si es necesario.

+0

Supongo que no hubo un aumento en el rendimiento b/c las consultas simples 'INSERT' no están optimizadas por el analizador de consultas MySQL, a diferencia de las declaraciones 'SELECT'. – raveren

+0

Leí en alguna parte que PDO solo "falsifica" una declaración preparada, mientras que MySQLI realmente hace el vaivén hacia el servidor para configurar el espacio de la memoria. – alfadog67

+0

Posible duplicado de [¿Debo usar declaraciones preparadas para MySQL en PHP PERFORMANCE-WISE?] (Http://stackoverflow.com/questions/2214408/should-i-use-prepared-statements-for-mysql-in-php- performance-wise) – e4c5

Respuesta

1

INSERT s están más ligados a IO, ya que generalmente no son muy complejos en términos de SQL, solo una lista de columnas y datos para poner en ellos. Por lo tanto, lo que utiliza para realizar las consultas no es tan significativo en el tiempo de ejecución como la cantidad de datos que está rellenando en la base de datos, qué tan rápido puede obtener los datos en el servidor de base de datos y qué tan rápido el servidor de base de datos puede almacenarlo

+0

Sí, pero en la documentación se dice que la consulta se almacena en caché en el servidor sql, y que está enviando solo parámetros para las inserciones, por lo que el servidor no tiene que verificar errores y otras acciones repetitivas, por lo que teóricamente deberían ser algunos beneficios de rendimiento. – Centurion

+1

Sí, pero lo que estoy diciendo es que la consulta en este caso generalmente es bastante pequeña en relación con los * datos *, por lo que no ve ninguna diferencia significativa porque cualquier diferencia real es pequeña en relación con el tiempo que lleva enviar el datos, que es constante y grande. – Amber

+0

Gracias, intentaré probar declaraciones más complicadas y veré los resultados. – Centurion

6

Prefiero las declaraciones preparadas en términos de seguridad en lugar de rendimiento (no estoy seguro de si es más rápido), por ejemplo, para evitar la inyección de sql.

+0

Estoy de acuerdo con usted en términos de seguridad .. – Centurion

Cuestiones relacionadas