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

Optimización

Estas en el tema de Optimización en el foro de Mysql en Foros del Web. buenas miren tengo una tabla de imagenes que tiene una columna 'id', y el resto de las columnas son atributos de la imagen, o sea ...
  #1 (permalink)  
Antiguo 22/06/2009, 09:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 14 años, 10 meses
Puntos: 0
Optimización

buenas

miren tengo una tabla de imagenes que tiene una columna 'id', y el resto de las columnas son atributos de la imagen, o sea que dependen solo de la id.
Las consultas las hago utilizando todos o casi todos los atributos, entonces la pregunta era si me convenía ponerle un index a cada columna, o si me convenia primero separar la tabla en muchas tablas, cada una con una columna 'id' y otra columna para el atributo. Por ahi vi que asi se agilizaba, pero no se si este será el caso. Que opinan??
  #2 (permalink)  
Antiguo 22/06/2009, 09:25
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: Optimización

Que para darnos una idea más precisa de lo que conviene necesitaríamos saber la estructura exacta de la tabla (sentencia CREATE TABLE, no una descripción somera), y un acercamiento al tipo de consultas que le realizas a esa tabla.
En principio, las consultas mejoran con los índices bajo algunos conceptos:
- Si usas un conjunto de campos en un SELECT, un índice definido sobre ese conjunto combinado (y no sobre cada uno) puede mejorar el resultado.
- Si usas dos o más campos en el WHERE relacionados con AND y donde el campo sea comparado con "=", puede mejorar con un índice.
- Toda clave candidata puede ser usada para definir un índice.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/06/2009, 09:59
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Optimización

gracias gnzsoloyo

lo q pasa es q el SELECT va a ir cambiando según lo que ponga el usuario que entre a mi web, entonces no se si puedo poner un index definido en un conjunto (puedo?). Por ejemplo, tengo un campo 'genero', y otro 'tamaño'. Si el index está definido para (genero,tamaño), igual puedo realizar un SELECT optimizado cuando busco solo por género? Por ejemplo una vez puede tocar hacer así:

SELECT * FROM imagenes WHERE genero = 'abstract' AND tamaño < 2;

y otra así:

SELECT * FROM imagenes WHERE genero = 'art' ORDER BY date DESC;

La tabla son muchos VARCHAR(255), algunos CHAR(4) aprox., y algunos INTEGER (perdon que no de detalle pero son muchos campos )

Y la unica consulta que me interesa es ese tipo de SELECT.. Por ahi vi que los index pueden ralentizar los INSERT, pero no importa.

Estaba pensando por ejemplo hacer una tabla para resoluciones, con 'id','width' y 'height', pero no se hasta que punto conviene subdividir.. Tampoco da hacer una tabla para width y otra para height. Si podia optimizar y a la vez dejar todo en una misma tabla, seria ideal.
  #4 (permalink)  
Antiguo 22/06/2009, 10:20
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: Optimización

Si tienes un exceso de flexibilidad en los parámetros de las consultas, es muy difícil hacer índices. Por otro lado, SELECT *... , es la forma más ineficiente de realizar una consulta, porque muchas veces traes datos que después no usas. En esas condiciones, sobrecargas del enlace de datos de bytes que luego descartas...
Sería buena idea ver la perspectiva global y verificar si hay alguna forma de acotar los datos requeridos y las opciones a los usuarios, de modo de hacer un sistema más eficiente.
Todos quieren darle flexibilidad a las cosas. Pero la flexibilidad se paga caro en la web y las bases de datos. Por eso las páginas de las grandes empresas te restringen las búsquedas a modelos predefinidos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 04:11.