Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Optimización de consultas DB 800.000 registros

Estas en el tema de Optimización de consultas DB 800.000 registros en el foro de Bases de Datos General en Foros del Web. Hola, muy buenas a todos. Tengo una consulta que me tarda 0.2650 seg en ejecutar y querría optimizarla, he realizado bastantes pruebas (Añadir nuevos indices, ...
  #1 (permalink)  
Antiguo 15/04/2017, 10:28
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 7 meses
Puntos: 3
Optimización de consultas DB 800.000 registros

Hola, muy buenas a todos.

Tengo una consulta que me tarda 0.2650 seg en ejecutar y querría optimizarla, he realizado bastantes pruebas (Añadir nuevos indices, eliminarlos, crear views) pero nada ha mejorado el rendimiento de la siguiente consulta:

Código MySQL:
Ver original
  1. SELECT enlace_click.id,enlace_click.enlace,enlace_click.cantidad
  2. FROM enlace_click
  3. INNER JOIN enlace ON enlace_click.enlace = enlace.id
  4. ORDER BY enlace_click.cantidad ASC , enlace_click.enlace DESC
Mostrando filas 0 - 29 (total de 802430, La consulta tardó 0.2650 seg)

EXPLAIN:
Código:
id	select_type	table	        type	possible_keys	key	  key_len  ref	                           rows    Extra	
1	SIMPLE	        enlace_click	ALL	UNIQUE,enlace	NULL	  NULL	   NULL	                           1074631 Using filesort
1	SIMPLE	        enlace	        eq_ref	PRIMARY	        PRIMARY   4	   gnula_serie.enlace_click.enlace 1	   Using index




Buscando por que puede llegar a tardar tanto:


Código MySQL:
Ver original
  1. SELECT enlace_click.id,enlace_click.enlace,enlace_click.cantidad
  2. FROM enlace_click
  3. INNER JOIN enlace ON enlace_click.enlace = enlace.id
  4. ORDER BY enlace_click.cantidad ASC , enlace_click.enlace ASC
Mostrando filas 0 - 29 (total de 802430, La consulta tardó 0.0016 seg)

EXPLAIN:
Código:
id	select_type	table	        type	possible_keys	key	key_len	ref	                        rows	Extra	
1	SIMPLE	        enlace_click	ALL	UNIQUE,enlace	NULL	NULL	NULL	                        1074631	Using filesort
1	SIMPLE	        enlace	        eq_ref	PRIMARY	        PRIMARY	4	gnula_serie.enlace_click.enlace	1	Using index








Código MySQL:
Ver original
  1. SELECT enlace_click.id,enlace_click.enlace,enlace_click.cantidad
  2. FROM enlace_click
  3. INNER JOIN enlace ON enlace_click.enlace = enlace.id
Mostrando filas 0 - 29 (total de 802489, La consulta tardó 0.0009 seg)

EXPLAIN:
Código:
id	select_type   table	      type    possible_keys	key	  key_len   ref	                              rows     Extra	
1	SIMPLE	      enlace_click    ALL     UNIQUE,enlace	NULL	  NULL	    NULL	                      1074670  NULL
1	SIMPLE	      enlace	      eq_ref  PRIMARY	        PRIMARY	  4	    gnula_serie.enlace_click.enlace   1	       Using index






INDICE:
Código:
Nombre de la clave	Tipo	Único	Empaquetado	Columna  	Cardinalidad	Cotejamiento	Nulo
cantidad,enlace	        BTREE	No	No	        cantidad	2023	        A	        No
                                                        enlace	        1074590	        A	        No

Un saludo.
  #2 (permalink)  
Antiguo 17/04/2017, 03:29
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: Optimización de consultas DB 800.000 registros

El tiempo que tarda es proporcional a la cantidad de registros a consultar así como al volumen de datos que han de ser comparados a fin de filtrar tu consulta; Con todo esto, prueba a categorizar los enlaces y así en vez de consultar 800.000 registros lo estarías reduciendo.
Otro método que suelo utilizar es un sub-programa que convierte los datos a binario. Generalmente reduce el volumen de datos que compara tu consulta aunque esto no se si es aplicable a tu caso. Un ejemplo sería el de una tabla que contiene 2 tipos de posibles resultados (0,1), 3 posibles resultados (00,10,11), 4 posibles resultados (000,001...). Así al realizar la consulta, en vez de comparar letras (zumo, alcachofa) estarías optimizando el tiempo puesto que no se comparan todos los caracteres sino una simple cadena de 1 y 0.

Saludos.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Etiquetas: optimización, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.