Simples optimizaciones para tus aplicaciones MySQL/PHP
Una serie de trucos que podemos utilizar para mejorar nuestras aplicaciones MySQL / PHP, traducido (lo mejor posible) de la fuente:
MySQL
- MySQL interpreta de derecha a izquierda, por lo que los limitadores más significativos los debes poner lo más a la derecha posible.
- Selecciona los campos que vayas a necesitar, no todos (*).
- No pongas en datos que se vayan a modificar rara vez, utiliza ficheros de propiedades.
- Usa Ãndices para las columnas que aparezcan en el WHERE y en el ORDER BY.
- Los Ãndices son buenos cuando la tabla se modifica con frecuencia, pero hace lentas las inserciones.
- Usa el comando EXPLAIN para analizar tus Ãndices.
- Si solo quieres obtener una fila, usa LIMIT 1 asà parará de buscar datos.
- Si usas $linea = mysql_fetch_array($resultado), hay dos modos de obtener los datos: $linea[n] y $linea[‘columna’]. Si vas a acceder solo por el nombre de la columna, usa $linea = mysql_fetch_assoc($resultado), asà no se creará el Ãndice numérico.
- Algunas veces mysql_free_result() gasta mas memoria que la que salva, comprueba la diferencia con memory_get_usage().
- No hagas siempre la misma consulta en la BD, guarda los resultados.
- Usa NOT NULL siempre que puedas, agiliza la ejecución y ahorra un bit.
- Usa tipos de datos que se ajusten a las necesidades, por ejemplo, en vez de usar INT, que puede ser muy grande, usa MEDIUMINT o SMALLINT cuando sea posible.
- Usa valores por defecto, inserta solo cuando sean diferentes a estos, agilizarás las inserciones.
PHP
- Intenta agrupar bloques de código
<?php ... ... ... ?>
es mas efectivo que
<?php ... ?> <?php ... ?> <?php ... ?>
- No concatenes texto cuando no sea necesario
"SELECT * FROM $tabla ORDER BY campo"
es más efectivo que
"SELECT * FROM ".$tabla." ORDER BY campo"
- Utiliza la comilla simple (‘) en vez de la comilla doble (“) siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas.
- La forma más rápida de concatenar texto es usando comillas simples.
- Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
- echo es más rápido que print.
- Indica el valor máximo para tus bucles for fuera del bucle en vez de dentro del bucle, porque si no, se evaluará la expresión en cada pasada del bucle
$max = 100/10; for($i=0; $i<$max; $i++){ ... }
es más rápido que
for($i=0; $i<100/10; $i++){ ... }
- Libera variables siempre que puedas, sobre todo arrays pesados.
Simple Optimization for PHP and MySQL
VÃa / Digg