Optimización consulta base de datos web php + mariadb

  • Autor Autor adonet
  • Fecha de inicio Fecha de inicio
adonet

adonet

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Tengo una web con una base de datos que cada vez es más grande, ya noto como va tardando cada vez más en cargar los datos (php + mariadb).
El problema es que hay una tabla que es la principal, de donde salen los datos importantes y cada vez es más grande.

¿Cómo puedo optimizar para ganar velocidad?

Había pensado en dividir esa tabla en varias, pero en alguna consulta va a tener que sacar datos de todas esas tablas con lo que supongo que tardará lo mismo
 
Sin ver la estructura de tus tablas y las consultas que quieres optimizar no hay mucho que se pueda aconsejar.

Pero generalmente:
  • Indexa columnas de búsqueda y asociación
  • Optimiza las consultas, por ejemplo, seleccionar los campos necesarios en vez de *, ver si los joins de varias tablas puedes "achicarlos" con tablas temporales entre paréntesis, etc.
  • Reducir el número de consultas al mostrar una página, ejemplo, no necesitas obtener el ID o nombre de usuario en cada carga de página, guárdalos en session
.
 
Separar la tabla principal en otras más pequeñas te ayudará en caso que necesites escalar la web. Además quees importante para leer los datos y a entender mejor cómo quieres estructurar la web.

Cómo ha dicho [MENTION=200969]ocentro[/MENTION] indexar columnas suele ayudar a hacer consultas más rápidas, pero además de que la consulta vaya rápido debes crear la base de datos pensando en el futuro.
Es importante mantener un orden si crees que esos datos van a ir creciendo con el tiempo, si no lo haces cada vez te resultará más complicado añadir nuevas features.

Un saludo!
 
Le recomiendo investigar algo sobre data warehouse; creo que le puede servir
 
Indexar columnas, crear index btree o bitmap o normales dependiendo de la columna, no usar * esto no es optimo pon las columnas que deseas traer.
Tambien puedes hacer una especie de bodega de datos y particionamiento de la BD por periodos ejem Años.
 
En efecto, eso de crear índices ayuda mucho, también puede ayudar revisar los tipos de datos, por ejemplo contemplar cambiar los 'text' por 'strings' de longitud menor si no afecta a la aplicación, o si tienes libertad de rediseñar la BD optar por llamar sids (ints) en las columnas en vez de los valores exactos(strings) y al llamarlos en el front usar algún join.
 
Sin ver la estructura de tus tablas y las consultas que quieres optimizar no hay mucho que se pueda aconsejar.

Pero generalmente:
  • Indexa columnas de búsqueda y asociación
  • Optimiza las consultas, por ejemplo, seleccionar los campos necesarios en vez de *, ver si los joins de varias tablas puedes "achicarlos" con tablas temporales entre paréntesis, etc.
  • Reducir el número de consultas al mostrar una página, ejemplo, no necesitas obtener el ID o nombre de usuario en cada carga de página, guárdalos en session
.
Creo que no lo pudo decir mejor.
 
Atrás
Arriba