sábado, 4 de agosto de 2012

Importancia del uso de índices en una Base de Datos MYSQL

Un día me encontraba tratando de resolver un problema de lentitud de un programa. El programa ejecutaba consultas a una tabla y después sobre la misma tabla actualizaba un campo para indicar los registros que ya habían sido procesados.

Al comenzar a debuggear el programa revisé el performance del servidor donde este programa se ejecutaba, revisé casi línea por línea el programa y me dí cuenta para mí sorpresa que el problema se encontraba en la consulta que actualizaba los registros ya procesados. Cada sentencia UPDATE tomaba aproximadamente 20 segundos en ejecutarse, demasiado tiempo para procesar información de una tabla que recibe al rededor de 700 registros por minuto.

Buscando información en foros, manuales y blogs y después de probar varias posibles soluciones, me dí cuenta que el problema se resolvía indexando el campo por el cual se actualizan los registros. La tabla en cuestión es InnoDB y el campo por el cual se realiza el UPDATE es de tipo entero, sin embargo este campo no estaba indexado y al indexarlo me dí cuenta que el UPDATE tomaba menos de 1 segundo en ejecutarse. De esta forma se resolvió mí problema.

Con esta información me dí cuenta que en tablas grandes que son InnoDB, los UPDATES sobre campos de tipo entero (INT) son muy rápidos.

No hay comentarios:

Publicar un comentario