Con algunos servidores/lenguajes de programación b-tree que aún se usan en la actualidad, los archivos ascii planos de longitud fija o variable se utilizan para almacenar datos. Cuando se agrega un nuevo registro/fila de datos a un archivo (tabla), el registro se (1) se agrega al final del archivo (o reemplaza un registro eliminado) y (2) los índices se equilibran. Cuando los datos se almacenan de esta manera, no tiene que preocuparse por el rendimiento del sistema (en lo que respecta al funcionamiento del servidor b-tree para devolver un puntero al primer registro de datos). El tiempo de respuesta solo se ve afectado por el número de nodos en sus archivos de índice.
Cuando empiece a usar SQL, con suerte se dará cuenta de que se debe tener en cuenta el rendimiento del sistema cada vez que se escribe una instrucción SQL. Usar una instrucción "ORDER BY" en una columna no indexada puede poner a un sistema de rodillas. Usar un índice agrupado podría poner una carga innecesaria en la CPU. Es el siglo 21 y me gustaría no tener que pensar en el rendimiento del sistema cuando se programa en SQL, pero aún lo hacemos.
Con algunos lenguajes de programación anteriores, era obligatorio utilizar un índice cada vez que se recuperan datos ordenados. Solo desearía que este requisito todavía estuviera vigente hoy. Solo me puedo preguntar cuántas empresas han actualizado sus sistemas informáticos lentos debido a una declaración SQL mal escrita sobre datos no indexados.
En mis 25 años de programación, nunca he necesitado mis datos físicos almacenados en un orden particular, así que tal vez es por eso que algunos programadores evitan usar índices agrupados. Es difícil saber cuál es la compensación (tiempo de almacenamiento, tiempo de recuperación de versículos), especialmente si el sistema que está diseñando puede almacenar millones de registros algún día.
"Una cosa que he notado es que todas las claves primarias se crean como índices NO CLUSTERADOS en lugar de agruparse" ¿Por qué observo lo opuesto? –
@ vgv8 - para aclarar, son los scripts de base de datos que heredé que establecen explícitamente las claves para no agruparlas. – AJM
También todavía no podía entenderlo http://stackoverflow.com/questions/3970430/why-when-how-is-whole-clustered-index-scan-chosen-rather-than-full-table-scan, aunque yo no podía entender por qué/cuándo tener un índice agrupado –