Ver índice de contenidos del libro

11.3. Optimización de bases de Datos

A continuación, encontrarás una lista de consejos que siempre debes seguir, al momento de crear nuevas tablas y escribir sentencias SQL.

11.3.1. Todos los registros deben tener un ID único

Cuando crees tablas, asígnales un campo id de tipo autonumérico incremental y establécelo como índice primario. Cuando agregues registros, este campo se completará automáticamente, con un número incremental, que te servirá para optimizar tus consultas y contar con un campo que te permita reconocer el registro como único.

CREATE TABLE productos(
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    producto VARCHAR(125)
);

El campo id, será como cualquier otro y lo podrás seleccionar en un SELECT o utilizarlo en cualquier cláusula WHERE.

11.3.2. Crear índices en las tablas

Todas las tablas deben tener un índice. El índice se asigna a uno o más campos, y es utilizado por SQL para filtrar registros de forma más rápida. Debes crear índices con precaución, ya que de la misma forma que se aceleran las consultas, se retrasa la inserción y actualización de registros, puesto que la base de datos, deberá actualizar los índices cada vez que se agreguen o modifiquen datos.

Cuando una consulta es ejecutada, MySQL tratará de encontrar primero la respuesta en los campos índice, y lo hará en el orden que los índices hayan sido creados.

¿Cuándo agregar índices? Cuando vayas a utilizar una combinación de campos en la cláusula WHERE. Por ejemplo, si filtrarás a menudo, los datos de la tabla producto por su campo precio y en_stock, que precio y en_stock sean un índice de múltiples campos:

CREATE TABLE productos(
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    producto VARCHAR(125),
    precio DECIMAL(10, 2),
    en_stock BOOL,
    descripcion BLOB,
    INDEX(precio, en_stock)
);

11.3.3. Indica cuáles campos no pueden ser nulos

SQL te da la posibilidad de indicar qué campos no pueden estar nulos. Indicar que un campo no debe estar nulo, te ayudará a no almacenar registros defectuosos en tu base de datos.

CREATE TABLE productos(
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    producto VARCHAR(125) NOT NULL,
    precio DECIMAL(10, 2) NOT NULL,
    en_stock BOOL,
    descripcion BLOB NOT NULL,
    INDEX(precio, en_stock)
);

11.3.4. Utiliza el motor InnoDB

El motor de bases de datos InnoDB, te permitirá crear tablas relaciones optimizando su rendimiento. Al momento de crear tus tablas, indica que utilizarás el motor InnoDB:

CREATE TABLE productos(
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    producto VARCHAR(125) NOT NULL,
    precio DECIMAL(10, 2) NOT NULL,
    en_stock BOOL,
    descripcion BLOB NOT NULL,
    INDEX(precio, en_stock)
) ENGINE=InnoDB;
Copyright (c) 2011-2013 Eugenia Bahit. La copia y redistribución de esta página se permite bajo los términos de la licencia Creative Commons Atribución NoComercial SinDerivadas 3.0 Unported siempre que se conserve esta nota de copyright.