SQL - Consejo sobre Indices

 
Vista:

Consejo sobre Indices

Publicado por Jose (2 intervenciones) el 09/09/2005 18:49:52
Estamos claros que en SQL SERVER se pueden crear Indices, pero me salta una duda en lo siguiente:

Suponiendo que hago una busqueda de facturas de clientes por ID en un tramo de fechas y en una ciudad, como la siguiente cláusula

...
where Factura.ID=Mi_ID and
Factura.fecha >=20050101 and Factura.fecha<=20050131 and
Factura.Ciudad=13

Suponiendo que la tabla se llama FACTURA

¿Como me resulta más eficiente crea los indices?

A) Crear 3 indices : Uno por ID, uno por fecha y uno por ciudad.
¿SQL acelera la consulta invocando los 3 indices automáticamente (ya que los 3 campos indexados se utilizan en la consulta)?
Además, si por alguna razón necesito buscar por ID (en otra posible consulta) me seria útil el primero (viendo el punto de vista de asignarle una utilidad más extendida a la consulta en cuestión)...

B) Crear un indice compuesto: ID+FECHA+CIUDAD
Si bien este indice es util para esta consulta en específico ¿Me seria util si en otra consulta sólo busco por ID? o si cambio el orden de la consulta como se indica
...
where Factura.Ciudad=13 and
Factura.rut=RutMio and
Factura.fecha >=20050101 and Factura.fecha<=20050131

¿será tan eficiente o útil?

Agradeciendo sus consejos , me despido

Jose
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consejo sobre Indices

Publicado por Isaías (5072 intervenciones) el 09/09/2005 22:31:20
Hola Jose

El Tema de INDICES, es de acuerdo a las necesidades del cliente, pero, hay una forma facil y rapida de que SQL Server nos RECOMIENDE que indices crear, ejecuta tu SELECT en el Query Analyzer y con INDEX TUNNIG WIZARD, te dara algunos consejos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consejo sobre Indices

Publicado por Jose (2 intervenciones) el 12/09/2005 16:29:26
Tengo claro en tema del INDEX TUNNIG WIZARD. Lo que ocurre con éste es que me crea un índice (por lo general compuesto) eficiente para la consulta evaluada, pero lo que necesito saber especificamente es ¿Qué es más útil?

1) Crear indices separados por cada campo importante de la tabla, de tal forma que se activen en la medida que se invoquen en la cláusula WHERE (¿En este caso, qué característica debe tener el indice?) o
2) Crear un indice compuesto, donde se indica el orden de la combinación de los campos. En este caso, ¿es útil si cambio el orden de los campos involucrados en el indice en una consulta (cláusula WHERE)? o ¿Es util si utilizo uno de los campos en una consulta o si utilizo otro campo que no esté considerado en el indice?

Atte

José Iturra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consejo sobre Indices

Publicado por Isaías (5072 intervenciones) el 12/09/2005 18:38:05
Busca en tu Ayuda en Linea, "Diseñar un Indice" y encontraras esto: (y otras cosas interesantes en cuanto a indices).

Las consultas cubiertas pueden mejorar el rendimiento. Las consultas cubiertas son aquellas en las que todas las columnas especificadas en la consulta están contenidas en el mismo índice. Por ejemplo, una consulta que recupera las columnas a y b de una tabla que tiene un índice compuesto creado en las columnas a, b y c se considera una consulta cubierta. La creación de índices que cubren una consulta puede mejorar el rendimiento, ya que todos los datos de la consulta se encuentran en el propio índice; para recuperar los datos sólo se debe hacer referencia a las páginas del índice y no a las páginas de datos de la tabla; de ese modo se reduce el número global de operaciones de E/S. Aunque el hecho de agregar columnas a un índice para cubrir consultas puede mejorar el rendimiento, el mantenimiento de las columnas adicionales en el índice supone mayores costos de actualización y almacenamiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consejo sobre Indices

Publicado por Alhucave (12 intervenciones) el 12/09/2005 22:43:23
Hola amigo,

te aconsejo crear índices sólo si en necesario.

para crear un índice, se debe analizar que tanto se va a utilizar, y si realmente justifica sacrificar espacio por la velocidad de la consulta en cuestión.

El índice del caso B (Crear un índice compuesto: ID+FECHA+CIUDAD)
me parece bien, ya que parece que es una consulta muy común en un programa que maneje facturas, es posible que se tengan que hacer muchas consultas utilizando ese índice.

En el caso A :

1. No creo que el índice de fecha sea una buena idea, ya que seria muy poco frecuente utilizar sólo el campo fecha para hacer una consulta.

2. Lo normal es que el id de una factura es único, y normalmente se encuentra en muchas tablas y por ende, se hacen muchos join con este campo, por eso si te recomiendo crear un indice con este campo.

3. el campo de ciudad es un caso parecido al de fecha.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar