que - SQL Server: índice agrupado en datetime, ASC o DESC
que significa clustered en sql (2)
Si tengo una tabla de SQL Server con un índice agrupado en un campo de fecha y hora, eso se establece en DateTime. Ahora (desde C #) antes de las inserciones, ¿el índice debe ser ascendente o descendente para evitar la reorganización de la tabla?
Gracias.
Lea esto http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx
Si la lectura se basó con frecuencia en el campo de fecha y hora, la buena elección es una clave compuesta de fecha e identidad, en ese orden (fecha, identidad).
Realmente no importa, ¿pero el DateTime realmente garantiza ser único? EVITARÍA poner un índice agrupado en un solo DateTime. En su lugar usaría una IDENTIDAD INT o IDENTIDAD BIGINT, y pondría un índice no agrupado regular en la Fecha del Tiempo (ya que eso no está garantizado para ser único ...)
Bagazo
PD: como una clave principal, el consenso general sobre lo que debería ser una clave agrupada es:
- único (de lo contrario, SQL Server lo "unificará" agregándole un exclusivo de 4 bytes)
- lo mas estrecho posible
- estático (nunca cambia)
- cada vez mayor
Las columnas que conforman la clave agrupada (incluido ese exclusivo de 4 bytes) se agregan a CADA ENTRADA en CADA índice no agrupado, por lo que desea mantenerlas lo más delgadas posible.
PS 2: las claves de agrupamiento se agregan a cada índice no agrupado porque esa es la forma en que SQL Server recuperará todas las filas una vez que encuentre el valor de búsqueda en el índice no agrupado. Es la "ubicación" de la fila en la base de datos, por así decirlo. Por lo tanto, debe ser único y estrecho .