Simples optimizaciones para tus aplicaciones MySQL/PHP
17:30 H (CET)| Temas: MYSQL · PHP · Trucos
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
es mas efectivo que<?php ... ... ... ?><?php ... ?> <?php ... ?> <?php ... ?> - No concatenes texto cuando no sea necesario
es más efectivo que"SELECT * FROM $tabla ORDER BY campo""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
es más rápido que$max = 100/10; for($i=0; $i<$max; $i++){ ... }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
Relacionados
Feedback (4) » Formulario
1. Luciano A. Ferrer ~ Sábado, 06 May 2006 | 07:01H:
mmmmmmm... no he entendido la parte de "No pongas en datos que vayan a modificar rara vez, utiliza ficheros de propiedades."
Está mal formulada la frase?
(es así que luego de mandar el formulario de comentario aparezco en otro formulario de comentarios solo y tengo que volver a escribir de nuevo? o me pasa a mí nomás?)
2. Luis ~ Sábado, 06 May 2006 | 14:18H:
Realmente si puede estar mal redactada, me falta un "se": "datos que SE vayan a modificar", las prisas, jeje.
Esto se refiere a usar una tabla para guardar variables de configuración del tipo: path_imagenes, nivel_trazas, url_otro_servidor, ... Estas variables que usamos para configurar nuestra aplicación es raro que se vayan a modificar con frecuencia. Lo que nos dicen es que en vez de usar una tabla en la base de datos, usemos un fichero de propiedades (ej: aplicacion.config)
¿Lo del formulario puede ser que le hayas pulsado sin querer a Revisar?
3. Pablo ~ Sábado, 10 Jun 2006 | 19:40H:
Otra tip sería el uso de la constantes para valores que no varían en toda la ejecución del script (tal es el caso para valores que tengan que ver con la configuración del script como base de datos, tablas, path's, url's, etc.) en vez de variables.
Las constantes consumen menos de un 50% de la memoria que usa una variable. Hice una comparativa entre el uso de variables, constantes y array estos días y publiqué los resultados en mi blog por si a alguien le sirve esto.

