Los errores más habituales al usar MySQL

Por Manuel Gutiérrez el 6 de diciembre de 2010

en: Bases de datos|Desarrollo Web

Las bases de datos son un componente indespensable en el desarrollo de páginas web, a menudo los desarrolladores se pueden decantar por diferentes lenguajes de programación (PHP, Python, Ruby on Rails, etc) pero al final casi todos utilizan MySql como elemento principal e indispensable para el manejo de los datos.

Personalmente pienso que es relativamente fácil escribir código funcional en pocas horas y unirlo a un buen diseño que en conjunto formen una aplicación útil, sin embargo este tipo de combinaciones tienden a no escalar bien debido a su alta dependencia a la base de datos, por ello en la gran mayoría de ocasiones nos vendría bien invertir tiempo en el análisis y optimización de la estructura de datos que estemos utilizando.

Estos son algunos de los errores más comunes que se suelen cometer en MySql.

Usar MyISAM en lugar de InnoDB

Son los dos motores de base de datos más famosos y el uso de uno u otro es una decisión bastante importante.

MyISAM es usada por defecto pero no por ello es la mejor opción, si estamos pensando en un proyecto experimental es una buena opción, sin embargo en la mayoría de ocasiones no es la mejor solución, vamos a citar alguna de las claves por las que es más recomendado el uso de InnoDB.

1. MyISAM no soporta las claves foráneas
2. Integridad de datos
3. En MyISAM con cada escritura se bloquea la tabla entera por lo que en cada “INSERT” o “UPDATE” estaremos bloqueando la tabla, a pequeña escala no se suele notar pero a medida que la exigencia de la base de datos sea mayor la disminución de rendimiento es considerable.

No filtrar la entrada de datos

Nunca debes confiar en el usuario en cuánto a la entrada de datos se refiere, para ello hay que asegurarse de filtrar y limpiar los datos en el lado del servidor y de esa manera evitar errores inesperados y posibles ataques de SQL injection.

No usar UTF-8

UTF-8 nos soluciona muchos problemas en cuanto a internacionalización de aplicaciones se refiere.

Filtrar datos con PHP en lugar de con MySQL

Cuando eres nuevo en MySQL a menudo tratas de solucionar problemas a la hora de sacar y filtrar datos con PHP esto es un grave error ya que es bastante más lento, puede que tengas que perder tiempo en investigar pero seguro que a ese problema que tienes hay una solución con MySQL.

Un ejemplo simple sería sacar la media de un valor en una tabla de la base de datos, si no sabes de MySQL seguramente trates de obtener el total en PHP y dividas las suma por el número de filas que has sacado de la tabla, esto en MySQL se puede hacer fácilmente con el uso de la función AVG().

Recuerda que en casi todos los casos será más efectiva una buena consulta con MySQL.

No optimizar las consultas

Cómo hemos comentado anteriormente la gran mayoría de errores a la hora de escalar un proyecto se encuentran en la base de datos, por ello es muy importante tomar un tiempo en la optimización de consultas, la elección de los índices, el tamaño de los campos y los filtros que vas a utilizar son preguntas necesarias a la hora de enfrentarte a una consulta.

Uso erróneo de tipo de datos

Hay un gran número de tipo de datos, a pequeña escala seguramente de igual una mala elección pero a medida que nuestra base de datos crece si el tipo de datos escogido es erróneo los problemas que vamos a tener van a ser grandes. Por eso antes de usar un DATETIME piensa si en ese caso específico sería más recomendable el uso de un DATE, o siel valor de un campo sabes que no va a sobrepasar cierta cantidad de cifras mira si te interesa utilizar un TINYINT en lugar de un INTEGER.

Usar * en las consultas SELECT

En muy pocos casos se tiene que recurrir al uso del * en las consultas SELECT, por varios motivos, el primer y principal motivo es que estás seguramente recogiendo más datos de los que necesitas, otro motivo es que realmente no sabes con exactitud que campos estás recuperando de la base de datos y si la consulta tiene algún JOIN la cosa se complica considerablemente.

Lo más recomendable es no recurrir nunca a este recurso salvo en casos excepcionales y tratar en todo momento exactamente los datos que necesitas.

Esta lista de errores la he sacado de una entrada en SitePoint Blogs: Top 10 MySQL Mistakes Made By PHP Developers

Dejar un comentario