Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
mysql:consejos:start [15/11/2011 01:59] – edició externa 127.0.0.1 | mysql:consejos:start [24/05/2018 11:53] (actual) – suprimit mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | = Consejos para BBDD MySQL | ||
- | [[http:// | ||
- | - evitar ciertas funciones nativas de MYSQL (fecha, aleatoriedad) para evitar que no las cahee | ||
- | - Usar el comando EXPLAIN en nuestras sentencias SELECT para ver que hace y poder optimizarlas | ||
- | - Usar LIMIT 1 cuando queremos coger solo un registro | ||
- | - Indexar todas las columnas de la tabla que pueden ser susceptibles de una búsqueda | ||
- | - Usar el mismo tipo de índice y tipo de columna (character encoding) en las columnas que se usan para JOINs | ||
- | - No utilizar el ORDER BY RAND() LIMIT 1 para obtener una fila aleatoria | ||
- | - No utilizar el SELECT * | ||
- | - Tener siempre un ID, Primary Key, Auto_Increment, | ||
- | - Usar ENUM en lugar de VARCHAR (ENUM funciona como un TinyInt) siempre que sea posible | ||
- | - Usar PROCEDURE ANALYSE(), te da sugerencias que puedes seguir o no. | ||
- | - Evitar el uso del NULL en las columnas siempre que sea posible | ||
- | - Usar sentencias SQL preparadas (mysqli_extension, | ||
- | - unbuffered Queries ( mysql_unbuffered_query() ) | ||
- | - guardar direcciones IP en UNSIGNED INT (4 bytes), con las funciones INET_ATON() y INET_NTOA() | ||
- | - Las tablas que tienen todos los campos de longitud fija son más rápidas. Las columnas del tipo VARCHAR, TEXT, BLOB no lo son. | ||
- | - Usar técnicas de " | ||
- | - datos pocos frecuentes VS datos muy utlizados | ||
- | - campos con alta frecuencia de actualización (UPDATES) | ||
- | - OJO con lo JOIN si son muy frecuentes no valdrá la pena | ||
- | - Fraccionar DELETEs e INSERTs grandes en fracciones (LIMIT 1000), usleep(50000) | ||
- | - Ajustar las columnas a su tamaño adecuado, las columnas pequeñas son más rápidas. | ||
- | - Escoger correctamente la Storage Engine: | ||
- | - MyISAM: ideal para heavy-read, lento en escritura (+ bloqueo de tabla). Cálculo rápido de SELECT COUNT(*) | ||
- | - InnoDB: más compleja que MyISAM, más lenta para cosas pequeñas. Soporta bloqueo de registro (en vez de la tabla entera) | ||
- | - Utilizar un ORM que aproveche las transacciones (Doctrine) | ||
- | |||
- | {{: | ||
- | |||
- | {{tag> |