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

optimización en una consulta SQL

Estas en el tema de optimización en una consulta SQL en el foro de Bases de Datos General en Foros del Web. Holas, tengo una duda sobre optimización. Tengo en una base de datos una tabla con x registros, uno de los campos de la tabla es ...
  #1 (permalink)  
Antiguo 19/03/2004, 11:39
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años, 1 mes
Puntos: 17
optimización en una consulta SQL

Holas, tengo una duda sobre optimización.

Tengo en una base de datos una tabla con x registros, uno de los campos de la tabla es un identificador de categoría.

Lo que quiero es saber cuantoas filas hay de cada categoria en esa tabla.

Se me ocurren dos formas:

1- Hacer tantas consultas a la base de datos como categorias haya, y en cada consulta recupero sólo las filas de esa determinada categoria.

2- Hacer una sola consulta que me saque todas las filas, y luego hacer un bucle que me vaya recorriendo fila a fila y vaya incrementando el contador correspondiente a la categoria a la que pertezca dicha fila.

¿Cúal de las dos opciones (o si hubiese alguna mejor) sería la más correcta en custión de optimización de código?

Por otra parte, si en una consulta sólo necesito el número de filas que se han recuperdado (en el caso de la opción 1) influiría en el tiempo de acceso a la consulta los campos que recupere? p.ej:
SELECT * FROM tabla WHERE campo = 1
ó
SELECT campo FROM tabla WHERE campo = 1

Me interesa la forma más óptima de realizar las consultas y de tratar los datos que recupere.

Un saludo.
  #2 (permalink)  
Antiguo 19/03/2004, 11:56
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años, 1 mes
Puntos: 17
Vaya, he visto que habeis trasladado el post.

Lo había publicado en PHP, porque es una pregunta hibrida, entre que método de los dos que he puesto es mejor, y he pensado que es más probable que me la respondan en PHP ya que los programadores de PHP normalmente también saben de Bases de datos, mientras que los de SQL no tienen porqué conocer PHP.

Pero bueno, si el sitio más adecuado es en "Bases de Datos", espero que me podais ayudar,

Un saludo.
  #3 (permalink)  
Antiguo 19/03/2004, 12:11
Avatar de machbel  
Fecha de Ingreso: junio-2002
Mensajes: 41
Antigüedad: 22 años, 6 meses
Puntos: 0
SELECT COUNT(*) FROM basedatos WHERE categoria = "categoria deseada"

Con eso sacarias el numero de filas pertenecientes a esa categoria.

Para saber cuantas categorias hay, SELECT DISTINCT(categorias) FROM basedatos

Si te da algun problema de mal escrito, mira en mysql, pero esas ordenes existen y funcionan rapido.
__________________
Webmaster de la red Hisparally:
www.hisparally.net
  #4 (permalink)  
Antiguo 19/03/2004, 12:16
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años, 1 mes
Puntos: 17
Muchas gracias por responder tan rápido, machbel.

Esas dos consultas me van a ayudar bastante, la duda es si es más rápido hacer:

SELECT COUNT(*) FROM tabla WHERE categoria = "categoria_que quiero" tantas veces como categorias haya
o hacer:
SELECT COUNT(*) FROM tabla y luego mediante un bucle en PHP calcular cuantas filas de cada categoria hay.

Supongo que no se notará excesivamente el rendimiento entre una y otra, así que elegiré una y lo haré así.

Gracias una vez más, saludos.
  #5 (permalink)  
Antiguo 23/03/2004, 05:00
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 8 meses
Puntos: 0
Si lo que necesitas es saber cuantas filas hay por categoría haz una select de agrupamiento, tal como la tienes, pero incluye todas las filas

SELECT categoria, COUNT(*) AS TotalFilasCategoria FROM basedatos GROUP BY categoria

No sé si esto te valdrá

Un saludo
  #6 (permalink)  
Antiguo 13/04/2004, 17:23
 
Fecha de Ingreso: abril-2004
Mensajes: 42
Antigüedad: 20 años, 8 meses
Puntos: 0
Hola quisiera saber como hacer para saber cuantas filas tengo en mi table, de la base de datos, quisiera saber si php no tiene alguna funcion que me permita saberlo para asignarselo a una variable y luego mostrarlo en pantalla. Espero que se alla entendido. Desde ya muchas Gracias!!!

Saludos!!!
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:44.