Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/03/2010, 08:24
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Como hacer un (sql o query) en mysql?

Cita:
1-"Segmentar", quieres decir que use una secuencia coordinada de los INNER JOIN en el posicionamiento de cada tabla con relación al select?
Cuando tienes varios INNER JOIN encadenados uno detrás de otro, siempre hay alguno(s) que poseen una mayor selectividad (un resultado reducido sobre un conjunto datos muy grande) y que se puede reducir mucho más aplicando condiciones sobre el WHERE de ese par específico.
En esos casos, no tiene sentido esperar que el WHERE actúe sobre el conjunto completo de lo devuelto por los INNER JOIN. Antes bien es mejor encerrar en el FROM ese par y crear una subconsulta (que en defintiva devolverá una tabla derivada) donde aplicar todo el filtrado para ese sólo par. COmo el resto de los INNER JOIN actúan ya sobre la tabla derivada, el resultado es mucho más efiicente y efectivo que hacer una sola consulta gigante.

Se entiende la idea?

Cita:
2-¿Un Indice de alta selectividad seria aquel que esta contenido en las dos tablas como tal y que llama los campos específicos de igual manera?
Un índice de alta selectividad es aquel que tiene la menos cantidad de valores asignados a la misma clave.
Esto se da en dos circunstancias: La PK es la de mayor selectividad (1:1), las FK generan un índice de menor selectividad (1:N ó N:N); a su vez los índices INDEX son los de menor nivel de selectividad, pero en estos últimos dos casos dependerá de la dispersión de los arboles de claves generados.
Si un índice definido sobre un campo tiene pocas repeticiones de grupos, se considera que tiene alta selectividad. No hay un límite preciso para definir eso porque depende del contexto: Si en un caso de 10.000 registros, 50 registros por clave se consideran poco selectivos, la misma cantidad sobre 1.000.000 de registros es alta selectividad.

Esto se usa para saber cual es el costo de consultas (se define como costo de consultas la cantidad de tiempo de procesador, bloques de memoria y accesos a disco necesarios para resolver una consulta).

Un detalle final: Los índices secundarios (o no agrupados) tienen mucho efecto, pero también aumentan el costo de las inserciones, por lo que no hay que abusar de ellos.
Además, el uso de " >="," >", "<=" y "<" pueden generar lectura de tablas completas cuando no hay índices definidos en los campos del WHERE, por lo que es bueno revisar lo que se esá solicitando y analizar el procedimiento de consulta con EXPLAIN.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)