none
Indices SQL RRS feed

  • Pregunta

  • Hola

    He de crer Indices y no se bien como hacerlo. Tengo 2 dudas.

    Es mejor crear cluster o no cluster?

    Debo crear en un indice que contenga todas las columnas que quiera indizar o es preferieble para cada columna crear un indice?

    Agradeceré cualquier otro consejo. Soy Novato.

    Gracias y saludos

    domingo, 3 de julio de 2016 11:50

Respuestas

  • Primero: Índices non-clustered puedes tener muchos, pero solo puede existir un único índice clustered en la tabla. El motivo es que cuando hay un índice clustered, este índice ES la tabla (todos los datos se quitan del Heap y se meten dentro del índice clustered). Esto implica que este índice es bueno cuando tienes que hacer una búsqueda por el campo indexado, y después usar los demás campos del registro indexado. Típicamente, si la clave primaria está bien elegida, precisamente es esa clave la que con más frecuencia usas para buscar el registro completo, y en consecuencia interesa tener un índice clustered sobre la clave primaria. De hecho, esto es lo que SQL Server hace por defecto salvo que le indiques lo contrario. Por tanto, normalmente no creas explícitamente ningún índice clustered porque ya lo hace automáticamente por ti SQL Server en cuanto que pones una clave primaria en la tabla (y en general, salvo raras excepciones, todas las tablas deberían tener una clave primaria).

    Para resolver el resto de las búsquedas (las que no usan la clave primaria) se ponen índices que concuerden con los campos de búsqueda. Por ejemplo, si quieres resolver con eficiencia una consulta que tenga "... where fecha=@algo and nombre=@otracosa", entonces te interesa poner un índice que incluya fecha y nombre. Si indexaras con dos índices independientes los campos fecha y nombre, entonces la resolución no sería igual de eficiente.

    • Propuesto como respuesta Willams Morales domingo, 3 de julio de 2016 17:32
    • Marcado como respuesta jorge1.6.4.4 lunes, 4 de julio de 2016 6:46
    domingo, 3 de julio de 2016 14:03