Otimização consulta banco de dados web php + mariadb

  • Autor Autor adonet
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
adonet

adonet

Beta
Usuário com poucas negociações! Use sempre o saldo do 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
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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.
 
Voltar
Topo