Ideas para acelerar consultas mysql

adonet Seguir

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Oct 2012
Mensajes
66
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
 

ocentro

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 Nov 2018
Mensajes
137
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
.
 

nalayu

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 May 2019
Mensajes
113
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!
 

minsurf

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
3 May 2019
Mensajes
333
Le recomiendo investigar algo sobre data warehouse; creo que le puede servir
 

jmdoren

Épsilon
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 May 2016
Mensajes
787

JarC

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
10 Feb 2011
Mensajes
257
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.
 

jrobertorma

Beta
Verificación en dos pasos activada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
9 May 2019
Mensajes
31
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.
 

Davexdesing

Programador
No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
11 Jul 2016
Mensajes
172
Edad
25
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.
 

jmdoren

Épsilon
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 May 2016
Mensajes
787

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba