Ayuda con Indices

23/02/2005 - 04:49 por Fer | Informe spam
Tengo una duda con respecto a los indices. Supongamos que tengo una Tabla
con campo1, campo2, campoN,y esta Tabla tiene dos indices: 1.- por
Campo1, Campo2
2.- por Campo5, Campo8

Que pasa en esta consulta:
Select campo4, campo6
From Tabla
Where campo1= "21"
and Campo12 = "Hola"

Al estar campo1 en el Where y sabiendo que éste forma parte del primer
indice (compuesto), entra por el indice o necesariamente debe esta el campo2
en el Where para que lo tome.

Gracias
Fer

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
23/02/2005 - 09:06 | Informe spam
Hola:

Utiliza el índice (ojo leer la puntualización), no necesitas tener los dos
campos, ya que campo1 es el primero del índice.

Una puntualización importante: en principio utiliza el índice, pero también
dependerá de los valores que haya en esa columna de la tabla, ya que puede
decidir que sea más óptimo no utilizarlo. Por ejemplo, si el 80% de las
filas tienen el valor 21 en esa columna, o si la tabla tiene muy pocas filas
..., considerará más óptimo hacer un table scan (leer toda la tabla).

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Fer" escribió en el mensaje
news:
Mostrar la cita
#2 Eladio Rincón
23/02/2005 - 13:47 | Informe spam
Hola,

como ha dicho Salva, depende de la cardinalidad de los valores

suponiendo que el índice por las columnas campo1 y campo2 es agrupado
tenemos lo siguiente:

si los valores son suficientemente selectivos (la cardinalidad comentada
antes), se realizará un clustered index seek para la condición where; como
en el nivel de hoja se encuentran los datos, se obtendría de ahí los valores
de campo3 y campo4.

si sólo está indexado por una columna (campo1 o campo2), se realizará un
clustered index scan porque uno de los dos valores faltaría para realizar la
operación "seek"


Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Fer" wrote in message
news:
Mostrar la cita
campo2
Mostrar la cita
#3 Alejandro Mesa
23/02/2005 - 14:37 | Informe spam
Fer,

No tengo nada que agregar a lo ya dicho por Salvador y Eladio. Solo quiero
preguntar que por que no haces una prueba y asi corroboras lo dicho. No
tienes que jecutar la sentencia, solo usa SET SHOWPLAN_TEXT ON antes de la
sentencia.

Ejemplo:

use northwind
go

set showplan_text on
go

select * from orders where orderdate >= '19960101' and orderdate < '19970101'
go

set showplan_text on
go


Result:

|--Clustered Index Scan(OBJECT:([Northwind].[dbo].[Orders].[PK_Orders]),
WHERE:([Orders].[OrderDate]>=Convert([@1]) AND
[Orders].[OrderDate]<Convert([@2])))



AMB

"Fer" wrote:

Mostrar la cita
#4 Fer
23/02/2005 - 18:10 | Informe spam
Tienen algun link para poder identificar las :
Index Scan
Unique Scan
Nestled loop

y otras, que aparecen en el showplan_text on, para
aprender a leer como toma los datos el motor en las
consultas.

|--Clustered Index Scan(OBJECT:([Northwind].[dbo].[Orders].
[PK_Orders]),
WHERE:([Orders].[OrderDate]>=Convert([@1]) AND
[Orders].[OrderDate]<Convert([@2])))

Muchas gracias
Saludos
Fer


Mostrar la cita
Eladio. Solo quiero
Mostrar la cita
corroboras lo dicho. No
Mostrar la cita
SHOWPLAN_TEXT ON antes de la
Mostrar la cita
orderdate < '19970101'
Mostrar la cita
[Orders].[PK_Orders]),
Mostrar la cita
que tengo una Tabla
Mostrar la cita
indices: 1.- por
Mostrar la cita
Campo8
Mostrar la cita
parte del primer
Mostrar la cita
necesariamente debe esta el campo2
Mostrar la cita
#5 Alejandro Mesa
23/02/2005 - 18:33 | Informe spam
Fer,

Puedes encontrarlo en los libros en linea.

Graphically Displaying the Execution Plan Using SQL Query Analyzer
mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\optimsql.chm::/odp_tun_1_5pde.htm


AMB

"Fer" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida