MariaDB y MySQL son las mejores opciones cuando se trata de sistemas de administración de bases de datos que utilizan Structured Query Language (SQL). SQL se utiliza en bases de datos relacionales para almacenar, manipular y recuperar datos.
Las consultas SQL son fáciles de crear. Sin embargo, las consultas mal escritas se ejecutan de manera ineficiente, lo que ralentiza el tiempo de respuesta del servidor. Las consultas ineficientes pueden degradar aún más el rendimiento de su aplicación a medida que la información crece en miles o millones de segundos.
Este artículo se centra en los pasos que puede seguir para aumentar la velocidad de las consultas SQL que se ejecutan en MySQL / MariaDB.
Nota especial: si desea mejorar el rendimiento de su servidor SQL, también puede considerar cambiar a un mejor proveedor de alojamiento web. Visite la mejor página de alojamiento MySQL de Hosting mas Baratopara encontrar los mejores servidores web en esta categoría, incluidas las opiniones de expertos y usuarios.
Normaliza tus tablas
La normalización es el primer paso que debe tomar al almacenar datos en su base de datos. Sus tablas deben estar bien organizadas para reducir la redundancia. También debe diseñar reglas para relacionar datos en diferentes tablas.
La formalización de bases de datos SQL puede requerir tablas adicionales para evitar la duplicación de datos. Por ejemplo, si tiene un cliente y una tabla de pedidos, no debe repetir el nombre del cliente en la tabla de pedidos. En su lugar, puede utilizar un ID de cliente en la tabla de pedidos que está vinculada a la tabla de clientes principal.
Utilice los tipos de datos correctos
Asegúrese de utilizar los tipos de datos correctos en las tablas. Por ejemplo, puede almacenar el ID de cliente en un campo ‘Entero’ en lugar de un tipo de datos ‘Varchar’, ya que el primero es liviano y más rápido de consultar.
Indexar todas las columnas
Todas las columnas utilizadas en las cláusulas where, group by, join y order by deben indexarse desde el principio. Esto asegura que la base de datos no realice un escaneo completo de la tabla cuando busca registros.
Por ejemplo, en la siguiente consulta, los campos Customer_Id y Transaction_Date deben indexarse:
Select * from orders where Customer_Id='1041' order by Transaction_Date asc
Utilice la palabra clave explicar para analizar consultas
Si una consulta se está ejecutando lentamente, preceda con la palabra clave ‘explicar’ para ver su comportamiento y obtener información sobre cómo funciona la declaración entre bastidores.
Por ejemplo, podemos repetir nuestra consulta anterior con la palabra clave de la siguiente manera:
Explain select * from orders where Customer_Id='1041' order by Transaction_Date asc
Una vez que ejecute dicha consulta, debe verificar la columna ‘posible_clave ‘ en el registro devuelto. Si el valor de ‘posible_clave ‘ es ‘Cero’, puede agregar índices para acelerar la consulta.
Utilice ‘unión por’ para acelerar las consultas
La declaración similar puede ser extremadamente lenta cuando se ejecuta en varias columnas. Por ejemplo, considere la siguiente consulta:
Select * from customers where First_Name like 'fra%' or Last_Name like 'joh%'
Podemos optimizar la misma consulta usando una cláusula de unión como se muestra a continuación:
Select * from customers where First_Name like 'fra%' union Select * from customers where Last_Name like 'joh%'
Evite el uso de funciones en índices
Al ejecutar consultas, el uso de una función en una columna indexada hará que MySQL / MariaDB ignore el índice. Por ejemplo, si tiene el ‘Nombre de empresa’ Campo en la tabla de un proveedor y utiliza una consulta como la que se muestra a continuación, el índice se ignorará, lo que hará que la consulta sea lenta.
Select * from vendors where Upper(Company_Name)='ABC'
No utilice un carácter comodín delante de un índice
La siguiente consulta hace que MySQL / MariaDB realice un escaneo completo de la tabla.
Select * from customers where First_Name like '%fra%'
En su lugar, utilice la siguiente sintaxis:
Select * from customers where First_Name like 'fra%'
Incluya solo las columnas requeridas en la declaración de selección
Por ejemplo, si tiene una lista de pedidos. quiero volver ‘Número de orden’ y ‘Cantidad’, puede utilizar la siguiente consulta:
Select Order_Id, Amount from orders
La consulta anterior se ejecuta más rápido que la siguiente porque esta última solicita todos los campos.
Select * from orders
Conclusión
Las anteriores son las diferentes formas que puede utilizar para optimizar las consultas en sus servidores MySQL / MariaDB. Los consejos deberían ayudarlo a comenzar, aunque los detalles sobre cómo ajustar el rendimiento de la base de datos dependen de lo que desee lograr en su aplicación web o sitio web. En caso de que descubra consultas lentas, intente ajustar la sintaxis de su SQL utilizando las recomendaciones anteriores y verá grandes mejoras en el rendimiento de su base de datos MySQL / MariaDB.