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

Indices compuestos???

Estas en el tema de Indices compuestos??? en el foro de Bases de Datos General en Foros del Web. ¿Me conviene hacer un indice compuesto por 3 campos, por ejemplo: KEY (pais,provincia,localidad)? Ya se que para buscar localidad tengo que indicar tambien los campos ...
  #1 (permalink)  
Antiguo 20/03/2005, 16:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 2 meses
Puntos: 0
Indices compuestos???

¿Me conviene hacer un indice compuesto por 3 campos, por ejemplo:
KEY (pais,provincia,localidad)?

Ya se que para buscar localidad tengo que indicar tambien los campos anteriores sino no lo utiliza. Lo que quiero saber es si me conviene hacer así, o directamente hacer 3 indices comunes KEY(pais), KEY(provincia) y KEY(localidad).
Si busco por localidad y provincia y pais en el WHERE me utilza e indice KEY(localidad) o no???

En fin que me recomiendan????Usar indice multiple o 3 indices simples??
  #2 (permalink)  
Antiguo 21/03/2005, 04:56
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Eso dependerá de como montes tus consultas. Ten en cuenta que cada consulta utilizará sólo un índice de todos los que tengas definidos en tu tabla según el analizador de consultas del gestor.
¿La localidad tiene un código único o depende del país y la privincia?. Porque si no es único no te vale de mucho usar el índice sólo con el campo localidad porque al buscar por código te devolvería más de un resultado y siempre tendrías que condicionar al país y la provincia para buscarlas. Si esto es así, lo mejor es el índice compuesto.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #3 (permalink)  
Antiguo 21/03/2005, 17:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias por la respuesta Vince!!!!!
Te pregunto una cosita que no me queda del todo claro.
Si tengo el índice:
KEY(localidad) y mi consulta es:
WHERE localidad="La Plata" AND Provincia="Buenos Aires" AND Pais="Argentina".

El DBMS va a utilizar el indice a pesar de que lo mismo tenga que consultar el país y la provincia sobre la BD?? O directamente no lo utiliza al índice KEY(localidad)???
  #4 (permalink)  
Antiguo 21/03/2005, 17:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 2 meses
Puntos: 0
Otra. Y si tengo que buscar por provincia y la provincia depende tambien del país (2 paises distintos pueden tener igual provincia) Me conviene hacer KEY(provincia,pais) cierto?? estoy en lo correcto?? Respondeme la anterior tambien si podés. Gracias.
  #5 (permalink)  
Antiguo 22/03/2005, 06:52
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Cita:
Iniciado por javier_82
Si tengo el índice:
KEY(localidad) y mi consulta es:
WHERE localidad="La Plata" AND Provincia="Buenos Aires" AND Pais="Argentina".

El DBMS va a utilizar el indice a pesar de que lo mismo tenga que consultar el país y la provincia sobre la BD?? O directamente no lo utiliza al índice KEY(localidad)???
Si es el único índice que tienes o, teniendo varios, es el que el gestor decide que es el de menor coste, te lo utilizará igualmente. Al fin y al cabo, el sistema no conoce de esa dependencia si tú no la defines.
Cita:
Iniciado por javier_82
Otra. Y si tengo que buscar por provincia y la provincia depende tambien del país (2 paises distintos pueden tener igual provincia) Me conviene hacer KEY(provincia,pais) cierto?? estoy en lo correcto?? Respondeme la anterior tambien si podés. Gracias.
Yo no definiría como key (provincia, pais) sino key (pais, provincia). Haciéndo lo de esta forma, este mismo índice te valdría para realizar búsquedas por país.

Un saludo.
__________________
Estoy contagiado de Generación-I
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 23:01.