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

Si tengo miles de registros pero uso where...

Estas en el tema de Si tengo miles de registros pero uso where... en el foro de Mysql en Foros del Web. Hola, quería saber qué pasa con la velocidad de respuesta en el siguiente caso: Una base de datos con 300.000 registros, todos son registros que ...
  #1 (permalink)  
Antiguo 01/12/2010, 08:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Si tengo miles de registros pero uso where...

Hola, quería saber qué pasa con la velocidad de respuesta en el siguiente caso:

Una base de datos con 300.000 registros, todos son registros que se pueden identificar por una categoría y un ID

Supongamos un foro donde hay 300.000 foros y se reparten como 50.000 por categoría jeje es hipotético.

Será más lento localizar esos 50.000 registros mientras más registros haya en la tabla? es decir, si luego tengo 1.000.000 de foros pero siguen siendo 50.000 registros para esa consulta, ¿será igual de rápido que la primera vez o será más lento por la cantidad de registros generales?


Muchas gracias!
Saludos
  #2 (permalink)  
Antiguo 02/12/2010, 04:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Si tengo miles de registros pero uso where...

Como mas registros mas lento, eso siempre.

Pero si usas los indices adecuados puede seguir siendo muy rapido.

Un indice lo que hace, explicación intuitiva no técnica, es ordenar previamente los datos de manera que la consulta en realidad primero busca el valor en el indice y atraves de este se dirige al grupo de registros de ese valor.

Con lo que la operacion acaba siendo una busqueda en el numero de categorias y luego en el numero de registros de la categoria, por tanto en tu caso el primer numero (numero de categorias) no varia (o no mucho) y el segundo sigue siendo 50.000, tengas 300.000 o 1.000.000 de registros.

Quim

Última edición por quimfv; 02/12/2010 a las 08:00
  #3 (permalink)  
Antiguo 02/12/2010, 15:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Si tengo miles de registros pero uso where...

Muchas gracias! esto de los indices conlleva una práctica desde mysql y otra desde php cierto?
  #4 (permalink)  
Antiguo 03/12/2010, 02:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Si tengo miles de registros pero uso where...

Debes crearlos en MySQL (7.4.5. Cómo utiliza MySQL los índices) en muchos casos no tendras que hacer nada mas que crearlos pero algunas veces se tiene que forzar su uso, o indicarle a mysql que quieres que se use (USE {INDEX|KEY}). Siempre sera en MySQL o en la sentencia Sql que ejecutas sea con php, directamente o con otro lenguaje.

Quim

(lo siento el primer link solo tiene traducido el titulo y el segundo ni eso)
  #5 (permalink)  
Antiguo 03/12/2010, 13:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Si tengo miles de registros pero uso where...

Pregunta: Qué cantidad de registros puede empezar a notarse considereablemente? Es decir, en mi bbdd tengo unos 2.500 registros, no tengo ni idea de lo que son los Index (lo acabo de descubrir ahora y miraré), pero lo notaría?
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #6 (permalink)  
Antiguo 03/12/2010, 15:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Si tengo miles de registros pero uso where...

Depende del caso. Puedes hacer un JOIN con dos tablas de 5000 registros cada una y si está mal optimizado, terminar con un producto cartesiano de 25 millones; o puedes hacer otro con dos tablas de 5 millones de registros y obtener 28 registros en menos de un segundo....
No hay exactamente una cantidad precisa donde impacta. Existen casos donde se nota el impacto del índice en la consulta.
Hay formas de hacer el cálculo previo que te puede aproximar a la optimización sin necesidad de prueba y error, pero requiere un conocimiento bastante profundo de las bases de datos y el funcionamiento de los índices. Y es demasiado teórico para postearlo ahora.
Creo que pronto lo pondré entre las FAQs de MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 03/12/2010, 16:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Si tengo miles de registros pero uso where...

Espero no desviarme del tema.. pero existe alguna manera de saber el tiempo de la consulta mysql?
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #8 (permalink)  
Antiguo 03/12/2010, 18:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Si tengo miles de registros pero uso where...

El tiempo... no con precisión y con ningún DBMS()Oracle y SQL Server incluidos), porque para saberlo hay que conocer el hardware, la estructura de las tablas que se usarán, los índices que afectarán la consulta, la selectividad de las condiciones, la cantidad de accesos a disco necesarios, el espacio de RAM disponible, etc., etc.
Básicamente, para lograr una aproximación necesitas los mismos elementos que el parser para establecer el plan de consulta, y aún así sería simplemente una aproximación, porque la ejecución de la misma consulta ejecutada en dos momentos distintos y con el mismo conjunto de datos puede tardar diferente según cuál sea el algoritmo que el DBMS use para resolver el plan...

No. No hay forma de conocer a priori cuánto dura una consulta. SOlo algunas aproximaciones. A lo más puedes establecer cuál es el segmento de la consulta que insume más tiempo y cuanto del tiempo total está consumiendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: 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 00:20.