consejo sobre Indices

29/07/2008 - 18:29 por Imac_Man | Informe spam
Hola,

tengo una tabla con los campos codigo, seccion, nombre. tiene una gran
cantidad de registros el codigo es un autonumerico y tiene un indice
clustered, pero la seccion para todos los registro solo pueden ser 6 codigos
diferentes y normalmente las consultas se hacen por medio de la seccion y no
por el codigopor ende las consultas son lentas, como debo hacer los
indices para que esto funcione repido. muchas gracias de antemano

Saludos

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
29/07/2008 - 21:49 | Informe spam
Penta,

Existe una forma de indicarle al motor cual indice usar, pero eso no es
buena practica, una porque el indice puede ser eliminado y el codigo fallaria
y la otra porque en caso de que cambien las estadisticas de distribucion,
entonces usar ese indice en especifico pudoera ser mas costoso que usar otro
indice. Puedes usar el "table hint" (no se como traducirlo) "with (index =
numero_de_el_index)".

use northwind
go

select *
from sys.indexes
where [object_id] = object_id('dbo.customers')
go

select customerid, city, companyname
from dbo.customers with (index = 0) -- tabla o clustered si existe

select customerid, city, companyname
from dbo.customers with (index = 2) -- by city
go

Si ejecutas las dos "select" que referencian la tabla "dbo.customers",
activando el
que se incluya el plan actual de ejecucion, podras ver que el query donde se
fuerza el uso de el indice nonclustered, tiene un costo relativo al batch mas
alto que el que usa el indice clustered. Esto prueba lo comentado en el post
anterior, donde se indica que hay veces que la operacion "key lookup" puede
ser mas costosa que escanear el indice clustered.


AMB


"Penta" wrote:

Estimados Gustavo y Alejandro
Se entendió a la perfección :)

Duda:
Es posible que el motor elija en cierta oportunidad usar el indice y
luego No usarlo ?? si es asi, supongo que siempre usará la manera mas
rapida ?? si no es asi como lo fuerzo a elegir el indice ??

Ps. Lastima que en el curso de administracion NO pongan enfasis en
estas cosas.

Un saludo.
Penta.

Respuesta Responder a este mensaje
#7 Penta
30/07/2008 - 01:05 | Informe spam
Fantastico.
Aclarado totalmente dicho punto.

Es posible que el motor elija en cierta oportunidad usar el indice y
luego No usarlo ?? supongo que en cualquier caso elegira la manera mas
rapida no ??

Un saludo.
Penta.
Respuesta Responder a este mensaje
#8 Jesús López
30/07/2008 - 19:44 | Informe spam
¿Cual es la consulta que quieres optimizar?. Lo mejor sería que las pusieras
aquí y entonces podríamos ver como hacerlo.

Jesús López
www.solidq.com


"Imac_Man" escribió en el mensaje
news:
Hola,

tengo una tabla con los campos codigo, seccion, nombre. tiene una gran
cantidad de registros el codigo es un autonumerico y tiene un indice
clustered, pero la seccion para todos los registro solo pueden ser 6
codigos
diferentes y normalmente las consultas se hacen por medio de la seccion y
no
por el codigopor ende las consultas son lentas, como debo hacer los
indices para que esto funcione repido. muchas gracias de antemano

Saludos

Respuesta Responder a este mensaje
#9 Jesús López
30/07/2008 - 19:45 | Informe spam
Table hint: sugerencia de tabla
Respuesta Responder a este mensaje
#10 Imac_Man
30/07/2008 - 19:56 | Informe spam
Hola,

les agradezco mucho su ayuda, la verdad aclara bastante la situacion sobre
los indices, pero dejenme comentarles que sucede en la practica.

si creo un indice adicional para el campo "seccion" del ejemplo que les
mencione al inicio y sabiendo que tengo un indice clustered en el campo
"codigo", el plan de mantenimiento muestra un table scanojo...si ahora
uno "seccion" al "codigo" en el clustered index igual no busca por el
indice.luego me asalta otra duda, que pasaria si creo un indice adicional
donde esten "seccion" y "codigo" juntos ademas de tener aparte a "codigo"
como indice clustered?...es esto valido?...no deberia hacerlo?que puedo
hacer?

gracias



"Penta" wrote:

Fantastico.
Aclarado totalmente dicho punto.

Es posible que el motor elija en cierta oportunidad usar el indice y
luego No usarlo ?? supongo que en cualquier caso elegira la manera mas
rapida no ??

Un saludo.
Penta.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida