OT - Consulta sobre uso de indices o no

10/05/2007 - 17:18 por jcac | Informe spam
Hola lista

Ayer asisti a una presentacion de DB2, en la que indicaron que según su
optimizador, que indican es inteligente, hace las siguientes difenrencias
por ejemplo:

si tenemos una tabla de 1 millon de registros y esta esta indizada por por
el campo1 que no es pk, entonces mantiene estadisticas del indice, lo que
pienso que el sql server hace lo mismo o si estoy equivocado corrijanme por
favor.

ahora viendo un caso practico en dicha tabla tenemos distintos datos, en
campo1 exiten datos como 'Blanco', 'Negro', 'Amarilo', etc, teniendo que
estos son repetitivos en muchos casos un color es predominante y en otros
no, lo que indican es que su optimizador inteligente hace los siguiente:

si el dato que se busca por ejemplo:

select campo1, campo2, campo3 from tabla where campo1 = 'Blanco', pero este
color tiene digamos 10 registros en la tabla de 1 millon, hara uso del
indice por dicho campo, en el caso:

select campo1, campo2, campo3 from tabla where campo1 = 'Negro', pero este
color existe dentro de la tabla en 900 mil registros no hara uso del indice
para hacer la busqueda sino que hara un barrido de toda la tabla debido a
que l mayoria de registros contienen dicha condicion, e indican que haciendo
de dicha manera es mucho mas rapido que hacer uso del indice.

despues de haberles contado un poco lo que me han dicho lo cual no lo puedo
comprobar debido a que no cuento con db2, mi duda es como sql server realiza
las busquedas si la tabla tiene indice por el campo siempre lo usa, o lo
deja de usar???

es casi como una duda de existencialidad

saludos
 

Leer las respuestas

#1 Javier Loria
11/05/2007 - 09:07 | Informe spam
Hola:
La forma en que se comporta SQL es mas o menos la que describiste.
Si hay muchas filas que cumplen la igualdad no usara el indices y si hay
pocas si.
Por eso es importante hacer uso de indices con columns distintivas.
Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"jcac" wrote in message
news:
Hola lista

Ayer asisti a una presentacion de DB2, en la que indicaron que según su
optimizador, que indican es inteligente, hace las siguientes difenrencias
por ejemplo:

si tenemos una tabla de 1 millon de registros y esta esta indizada por por
el campo1 que no es pk, entonces mantiene estadisticas del indice, lo que
pienso que el sql server hace lo mismo o si estoy equivocado corrijanme
por favor.

ahora viendo un caso practico en dicha tabla tenemos distintos datos, en
campo1 exiten datos como 'Blanco', 'Negro', 'Amarilo', etc, teniendo que
estos son repetitivos en muchos casos un color es predominante y en otros
no, lo que indican es que su optimizador inteligente hace los siguiente:

si el dato que se busca por ejemplo:

select campo1, campo2, campo3 from tabla where campo1 = 'Blanco', pero
este color tiene digamos 10 registros en la tabla de 1 millon, hara uso
del indice por dicho campo, en el caso:

select campo1, campo2, campo3 from tabla where campo1 = 'Negro', pero este
color existe dentro de la tabla en 900 mil registros no hara uso del
indice para hacer la busqueda sino que hara un barrido de toda la tabla
debido a que l mayoria de registros contienen dicha condicion, e indican
que haciendo de dicha manera es mucho mas rapido que hacer uso del indice.

despues de haberles contado un poco lo que me han dicho lo cual no lo
puedo comprobar debido a que no cuento con db2, mi duda es como sql server
realiza las busquedas si la tabla tiene indice por el campo siempre lo
usa, o lo deja de usar???

es casi como una duda de existencialidad

saludos


Preguntas similares