Indices

06/09/2004 - 18:34 por Marcelo W. Lopez Cremona | Informe spam
Hola,
Cuando creo un indice en una tabla este es seleccionado automáticamente por
la consulta, pero el problema se presenta cdo tengo que usar un between
tengo que forzar el uso del indice, porq sucede esto, existe otra solución.


Marcelo Lopez
MCP

Preguntas similare

Leer las respuestas

#1 Emilio Boucau
06/09/2004 - 19:04 | Informe spam
Marcelo,

podes poner la estructura del indice y la consulta que usa between ? Si,
ademas, podes poner el quey plan (en modo texto) de la consulta con between
cuando no usa el indice, seria muy bueno.


Saludos !

Emilio Boucau
Buenos Aires - Argentina
http://www.portalsql.com
Respuesta Responder a este mensaje
#2 Marcelo Lopez
06/09/2004 - 19:50 | Informe spam
Esta es sin indice
select * from tblcodpos where scodpos between 'T' and 'U'

StmtText
-

|--Parallelism(Gather Streams)
|--Table Scan(OBJECT:([te].[dbo].[tblcodpos]),
WHERE:([tblcodpos].[scodpos]>='T' AND [tblcodpos].[scodpos]<='U'))


Esta consulta es con índice forzado

select * from tblcodpos (index = ix_tblcodpos) where scodpos between 'T' and
'U'

StmtText
-
-
|--Bookmark Lookup(BOOKMARK:([Bmk1000]), OBJECT:([te].[dbo].[tblcodpos]))
|--Index Seek(OBJECT:([te].[dbo].[tblcodpos].[IX_tblcodpos]),
SEEK:([tblcodpos].[scodpos] >= 'T4÷þ' AND [tblcodpos].[scodpos] < 'T41'),
WHERE:(like([tblcodpos].[scodpos], 'T40%', NULL)) ORDERED FORWARD)


Indices

IX_tblcodpos - nonclustered, unique located on PRIMARY - scodpos

Marcelo W. Lopez
MCP
Respuesta Responder a este mensaje
#3 Adrian D. Garcia
06/09/2004 - 23:40 | Informe spam
Con el permiso de Emilio, adicionalmente puedes agregar la salida de invocar
el procedimiento almacenado sp_helpindex nombredetutabla para ver que
indices tiene esa tabla?

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Emilio Boucau" wrote in message
news:
Marcelo,

podes poner la estructura del indice y la consulta que usa between ? Si,
ademas, podes poner el quey plan (en modo texto) de la consulta con


between
cuando no usa el indice, seria muy bueno.


Saludos !

Emilio Boucau
Buenos Aires - Argentina
http://www.portalsql.com


Respuesta Responder a este mensaje
#4 Adrian D. Garcia
06/09/2004 - 23:41 | Informe spam
Generalmente si la cantidad de filas que selecciona el indice es un BETWEEN
es grande y/o el indice no es cluster, SQL Server no lo utilizara y
seguramente ejecutara un cluster index scan o un table scan para resolver la
consulta.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Marcelo W. Lopez Cremona" wrote in message
news:
Hola,
Cuando creo un indice en una tabla este es seleccionado automáticamente


por
la consulta, pero el problema se presenta cdo tengo que usar un between
tengo que forzar el uso del indice, porq sucede esto, existe otra


solución.


Marcelo Lopez
MCP


Respuesta Responder a este mensaje
#5 Adrian D. Garcia
07/09/2004 - 00:51 | Informe spam
Fijate en el IO generado por cada opcion. Estoy casi seguro que el tablescan
en este caso genera menos IO que el uso del indice. El io lo puedes ver con
SET STATISTICS IO ON antes de cada ejecucion.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Marcelo Lopez" wrote in message
news:%


Esta es sin indice
select * from tblcodpos where scodpos between 'T' and 'U'

StmtText

|--Parallelism(Gather Streams)
|--Table Scan(OBJECT:([te].[dbo].[tblcodpos]),
WHERE:([tblcodpos].[scodpos]>='T' AND [tblcodpos].[scodpos]<='U'))


Esta consulta es con índice forzado

select * from tblcodpos (index = ix_tblcodpos) where scodpos between 'T'


and
'U'

StmtText
|--Bookmark Lookup(BOOKMARK:([Bmk1000]),


OBJECT:([te].[dbo].[tblcodpos]))
|--Index Seek(OBJECT:([te].[dbo].[tblcodpos].[IX_tblcodpos]),
SEEK:([tblcodpos].[scodpos] >= 'T4÷þ' AND [tblcodpos].[scodpos] < 'T41'),
WHERE:(like([tblcodpos].[scodpos], 'T40%', NULL)) ORDERED FORWARD)


Indices

IX_tblcodpos - nonclustered, unique located on PRIMARY - scodpos

Marcelo W. Lopez
MCP




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