* Tres métodos para optimizar el rendimiento del sistema:
   - Mejorar la estructura de las tablas.
   - Mejorar las consultas (pero depende de cada aplicación).
   - Mejorar la configuración del servidor MySQL.

 * Las tablas desordenadas provocan búsqueda secuencial lenta. Pero una tabla
   ordenada también tiene su coste:
   - Ordenar una tabla desordenada es costoso.
   - Constante acceso de escritura desordena de nuevo los registros de la tabla.
   - La inserción y eliminación ordenada de registros es costoso.
   - Cuando ordenamos por una columna desordenamos el resto de columnas.

 * Creando índices conseguiremos consultas mucho más rápidas:
   - Es menos costoso de insertar. modificar y eliminar en un índice que hacerlo
     en toda una tabla ordenada.
   - Puedo tener varios índices de una tabla, lo que permite ordenar tabla por
     varios criterios a la vez.
   - Los índices ocupan espacio en disco y memoria, y las operaciones de
     inserción, modificación y borrado serán un poco más lentas (habrá que
     actualizar índices), por lo que no debemos indexar todas las columnas, sino
     sólo las más usadas en búsquedas.
   - Cuanto más pequeño es el índice más rápidas serán las operaciones.

?

 

 * Algunas sentencias se ejecutan mucho más eficientemente si hay índices:

     SELECT * FROM A,B,C WHERE A.a = B.b AND B.b = C.c;

   - Sin índices  ->  producto cartesiano + filtrado
   - Con índices  ->  A + (filtrado A.a = B.b) + (filtrado B.b = C.c)

 * Crear una nueva tabla con índices:
     CREATE TABLE nombre_tabla (definición, INDEX nombre_indice (campo(longitud)), ...);

   Ejemplo:
     CREATE TABLE `Alumnos` (
       `DNI` int(8) NOT NULL,
       `Nombre` char(35) NOT NULL,
       `Nota` int(2) NOT NULL,
       PRIMARY KEY (`DNI`),
       INDEX(`Nombre`) );

 * Crear un índice en una tabla ya existente (dos maneras):
     CREATE [UNIQUE] INDEX nombre_indice ON nombre_tabla (nombre_columna(longitud),...);
     ALTER TABLE nombre_tabla ADD INDEX nombre_indice (nombre_columna(longitud),...);

   Ejemplo:
     CREATE INDEX indice ON Alumnos (Nombre(10));
     ALTER TABLE Alumnos ADD INDEX (Nombre(10));

 * Borrar un índice en una tabla ya existente (dos maneras):
     DROP INDEX nombre_indice ON nombre_tabla;
     ALTER TABLE nombre_tabla DROP INDEX nombre_indice;

   Ejemplo:
     DROP INDEX indice ON Alumnos;
     ALTER TABLE Alumnos DROP INDEX Nombre;

 * Las consultas por columnas que pueden contener valores NULL son más lentas.

 * El rendimiento mejora si los registros de la tabla tienen longitud fija (sin
   campos de tipo VARCHAR, TEXT o BLOB). Si cada campo (columna) tiene una
   longitud fija entonces cada registro (línea) también tendrá una longitud fija.
   - Disminuye la fragmentación: los registros borrados son substituidos por
     registros de la misma longitud.
   - Aumenta la velocidad: los registros son accedidos por "número de registro"
     en lugar de "desplazamiento dentro del fichero".
   - Disminuye el consumo de memoria: el índice es más pequeño.

 * También se puede desfragmentar tablas para ganar espacio y velocidad:

     OPTIMIZE TABLE tabla;

 * Lecturas para profundizar:
   - http://dev.mysql.com/doc/refman/5.0/es/mysql-indexes.html
   - http://dev.mysql.com/doc/refman/5.0/es/create-index.html
   - http://dev.mysql.com/doc/refman/5.0/es/optimize-table.html
   - http://dev.mysql.com/doc/refman/5.0/es/optimizing-database-structure.html

 

 

El Comercio Eletrónico Introducción al comercio electrónico Es importante notar que hay una secuencia cronológica de eventos que ocurren cuando una persona pone su negoc...
Ranking Buscadores Agosto 2011 Pese a la desactivación en Google de la herramienta RealTime con la que ofrecer resultados inmediatos obtenidos de fuentes como redes sociales, la bue...
Windows 8 recibe buenas críticas en Build Después de algunas “filtraciones” que han rondado la red, y la increíble expectativa que está causando Windows 8, el nuevo sistema operativo de Micros...
Google Panda y como afecta a las webs Google Panda es el nombre con el que la compañía líder de Internet ha venido a denominar la última incorporación de nuevos parámetros al algoritmo sec...
Angry Birds ya esta en Facebook La lucha entre cerdos y pájaros que buscan sus huevos robados se ha convertido en uno de los juegos más populares, con 500 millones de descargas en l...
Orders List Purchased Products (VQMod) Opencart Module This Module Requires VQMod To Work This add a column to the orders list that lists the purchased products for each order. Features: Adds colum...
Que es Google Panda? Google Panda es un cambio en el algoritmo de Google ranking de resultados de búsqueda que fue lanzado por primera vez en febrero de 2011. El cambio d...
El Test de Turing y la inteligencia artificial Alan Turing (1912-1954) fue un matemático, criptógrafo, filósofo y un teórico de la computación que, además de trabajar en el equipo que descifró los ...
Nueva RC para PHP 5.4 Con algo de retraso sobre las previsiones originales PHP 5.4 sigue dando pasos hacía el lanzamiento de la versión final. En este sentido el equipo ...
Raspberry Pi amplía su gama de microordenadores La compañía lanza el nuevo Raspberry Pi Modelo B + para seguir escalando posiciones en el mercado y entre la comunidad educativa. Los microordena...