none
¿Que son exactamente los Indices?

    Question

  • Bueno siempre he escuchado hablar de los indices en bases de datos, en la escuela y ahora en el trabajo, pero nunca me a quedado 100% claro que son. Alguien podria darme una explicacion de los diferentes tipos de indices que hay? con un ejemplo practico si es posible jejejej, he leido varias cosas sobre indices en msdn y otras paginas pero siempre es bla bla bla, quiciera que se me mostrara un ejemplo del mundo real.

    Gracias por su tiempo :D
    Saturday, May 09, 2009 12:09 AM

Answers

  • Hola,
    Una definición simple de lo que es un índice, podemos decirlo para fines prácticos, como "una copia ordenada de la tabla". En SQL las tablas pueden contener mas de un índice, incluído el PK (primary key, que solo se define uno por tabla) no voy a aburrirte con los conceptos de CLUSTERED y NONCLUSTERED y todas las demás opciones que tienes al crear un índice, aunque debes tenerlas en cuenta a la hora de crearlo y para eso te recomiendo leer la ayuda en línea del SQL (SQL Books Online).
    Para un ejemplo concreto, te mostraré la estructura de una tabla:

    Nombre:
    HisContabilidad

    Columnas:
    FechaProcesado
    UsuarioProcesado
    Fecha
    Transaccion
    Sucursal
    Documento
    SubTransaccion
    Cuenta
    Cargo
    Abono
    FechaContable
    Aplicacion
    Partida
    Opcion
    Impresion
    SaldoInicial
    UsuarioGrabacion
    Concepto
    Referencia


    Contiene 3 indices + el primary key:
    IX_HisContabilidad_Documento     Fecha, Transaccion, Sucursal, Documento
    IX_HisContabilidad_Partida           FechaContable, Partida, Aplicacion
    IX_HisContabilidad_Cuenta          Cuenta, FechaContable
    PK_HisContabilidad     primary key(FechaProcesado, UsuarioProcesado)

    Ahora bien, cuando haces referencia a la tabla en un select, puedes hacer referencia a uno de sus índices (solo a uno):

    select *
    from HisContabilidad with(index=IX_HisContabilidad_Partida)
    where Fecha = '01/May/2009'

    De esta forma, los registros que te presentará esta consulta, serán ordenados por los tres campos que componen el índice IX_HisContabilidad_Partida. Un índice, al ser creado, lo puedes definir como ASC (ascendente, orden del menor al mayor valor, 1, 2, 3, 4) o DESC (descendente, orden del mayor al menor valor, 4, 3, 2, 1).
    Esto te será sumamente útil para el ordenamiento (en lugar de utilizar la cláusula ORDER BY, la cual vuelve ineficiente la consulta) de los registros, ya que el acceso y la búsqueda serán mas rápidos.

    Atte.

    Max

    Saturday, May 09, 2009 6:49 AM