Sobre cantidad de indices

14/10/2004 - 02:49 por El principiante | Informe spam
Hola a todos.


Es conveniente tener en las tablas los indices necesarios a discrecion sin
que afecte el rendimiento ?

Normalmente los indices por los que se hacen busquedas para consultas.

Preguntas similare

Leer las respuestas

#6 Gustavo Larriera [MVP]
14/10/2004 - 04:43 | Informe spam
Más allá de las excelentes sugerencias de los amigos que ya te han
contestado, en la práctica los índices son muchas veces reorganizados,
reconstruidos, eliminados y nuevos índices son creados a medida que la base
de datos sigue su ciclo de vida. Una herramienta que ayuda en el trabajo es
el Index Tuning Wizard, que basado en una traza de consultas tipicas contra
la base de datos, te sugiere cuáles índices son adecuados.

Como toda herramienta robotizada... tiene sus ventajas y desventajas :-)

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"El principiante" wrote in message
news:
Hola a todos.


Es conveniente tener en las tablas los indices necesarios a discrecion sin
que afecte el rendimiento ?

Normalmente los indices por los que se hacen busquedas para consultas.


Respuesta Responder a este mensaje
#7 Salvador Ramos
14/10/2004 - 09:36 | Informe spam
Perdona que te corrija Isaías, el máximo de indices (non clustered) por
tabla es de 249.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ 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)?

"Isaias" escribió en el mensaje
news:
En cuanto al LIMITE MAXIMO de indices, no pueden ser mas de 16 por Tabla.
Respuesta Responder a este mensaje
#8 Miguel Egea
14/10/2004 - 15:30 | Informe spam
a), si si importa la distribución de los datos, SQl lo tiene en cuenta a
través de las estadísticas, tienes un artículo muy bueno colaboración de
Fernando Guerrero en Portalsql.com sobre índices en campos booleanos.


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿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)?


"El principiante" escribió en el mensaje
news:
Hola de nuevo Javier

Hola:
A esta regla le agregaria, algunas condiciones "extra":
a) La Columna sea "Distintiva", una columna con valores, F o M, no se


usara.

No importa la distribucion de los valores ?

Una columna con muchos valores distintivos tinen mas probabilidad de


usarse.
b) El orden del indice es importante, el del WHERE no. Es diferente el
indice (Identificacion, Tipo) a (Tipo-Identificacion).



Hay algunos operadores que limiten el uso de indices ?

c) Los indices solo se usan si hay "muchas" filas. Cuando hay pocas no se
usan, si el SELECT filtra poco las filas, no se usa el indice.



Muchas podria hablarse desde cuanto aprox., 50, 100 mil, un millon ?


Respuesta Responder a este mensaje
#9 Javier Loria
14/10/2004 - 15:34 | Informe spam
Hola:
Si haces tan buenas preguntas no creo que tengas mucho de principiante.
:D
Definitivamente haces las preguntas correctas.

Distribucion:
Si si importa mucho la distribucion de los valores? Si por ejemplo el
80% de las filas tiene el mismo valor y solo el 20% esta distribuido en
muchos valores diferentes, es muy probable que para el valor mas popular no
se use el indice y para los demas si se use.

Operadores:
Si, si los hay: el OR suele matar el uso de los indices o los limitan
significativamente y en general cuando usas funciones sobre las columnas que
participan en el JOIN o en el WHERE terminas con un Tabla Scan.

Numero Filas:
Asumo que la tabla es normalizada, que las columnas son pocas y que son
pequenas.En un metodo obviamente no es muy cientifico:
Si la tabla tiene menos de 10,000 filas ni siquiera considero incluir un
indice, en algun momento despues de 10,000 comienza a tener sentido tener
indices.
Si una consulta filtra menos de un 10% de las filas (o sea que de 1000
filas en la tabla obtienen 100 despues del WHERE/JOIN), y el indice seria un
non-clustered probablemente no se usa. Si es clustered entonces si se usa.
Estas recomendaciones son fruto de la experiencia y no de un analisis
detallado, asi que por supuesto son muy cuestionables y podrian no aplicarse
a tu ambiente.

Saludos,

Javier Loria
Costa Rica
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

"El principiante" wrote in message
news:
Hola de nuevo Javier

> Hola:
> A esta regla le agregaria, algunas condiciones "extra":
> a) La Columna sea "Distintiva", una columna con valores, F o M, no se
usara.

No importa la distribucion de los valores ?

> Una columna con muchos valores distintivos tinen mas probabilidad de
usarse.
> b) El orden del indice es importante, el del WHERE no. Es diferente el
> indice (Identificacion, Tipo) a (Tipo-Identificacion).

Hay algunos operadores que limiten el uso de indices ?

> c) Los indices solo se usan si hay "muchas" filas. Cuando hay pocas no


se
> usan, si el SELECT filtra poco las filas, no se usa el indice.

Muchas podria hablarse desde cuanto aprox., 50, 100 mil, un millon ?


Respuesta Responder a este mensaje
#10 Norman A. Armas
14/10/2004 - 16:00 | Informe spam
Exelente hilo!!!!

Solo queria agregar algo

Para todos los Foreing Keys es aconsejable crear un indice identico al
foreingkey de cada tabla.
Deben de analizarze ademas de los campos que estan en el WHERE los campos
que estan en el JOIN.



Saludos,

Norman



"Javier Loria" wrote in message
news:OtL$
Hola:
Si haces tan buenas preguntas no creo que tengas mucho de


principiante.
:D
Definitivamente haces las preguntas correctas.

Distribucion:
Si si importa mucho la distribucion de los valores? Si por ejemplo el
80% de las filas tiene el mismo valor y solo el 20% esta distribuido en
muchos valores diferentes, es muy probable que para el valor mas popular


no
se use el indice y para los demas si se use.

Operadores:
Si, si los hay: el OR suele matar el uso de los indices o los limitan
significativamente y en general cuando usas funciones sobre las columnas


que
participan en el JOIN o en el WHERE terminas con un Tabla Scan.

Numero Filas:
Asumo que la tabla es normalizada, que las columnas son pocas y que


son
pequenas.En un metodo obviamente no es muy cientifico:
Si la tabla tiene menos de 10,000 filas ni siquiera considero incluir


un
indice, en algun momento despues de 10,000 comienza a tener sentido tener
indices.
Si una consulta filtra menos de un 10% de las filas (o sea que de 1000
filas en la tabla obtienen 100 despues del WHERE/JOIN), y el indice seria


un
non-clustered probablemente no se usa. Si es clustered entonces si se usa.
Estas recomendaciones son fruto de la experiencia y no de un analisis
detallado, asi que por supuesto son muy cuestionables y podrian no


aplicarse
a tu ambiente.

Saludos,

Javier Loria
Costa Rica
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

"El principiante" wrote in message
news:
> Hola de nuevo Javier
>
> > Hola:
> > A esta regla le agregaria, algunas condiciones "extra":
> > a) La Columna sea "Distintiva", una columna con valores, F o M, no se
> usara.
>
> No importa la distribucion de los valores ?
>
> > Una columna con muchos valores distintivos tinen mas probabilidad de
> usarse.
> > b) El orden del indice es importante, el del WHERE no. Es diferente el
> > indice (Identificacion, Tipo) a (Tipo-Identificacion).
>
> Hay algunos operadores que limiten el uso de indices ?
>
> > c) Los indices solo se usan si hay "muchas" filas. Cuando hay pocas no
se
> > usan, si el SELECT filtra poco las filas, no se usa el indice.
>
> Muchas podria hablarse desde cuanto aprox., 50, 100 mil, un millon ?
>
>


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