SharePoint 2010: ¿Por qué puede ser importante indexar las columnas de una lista?

Cuando trabajamos con listas de SharePoint, tenemos la posibilidad de indexar sus columnas como mecanismo para mejorar el rendimiento en el uso de las listas. El concepto de indexación de listas de SharePoint es similar al de indexar columnas en una tabla de base de datos, con la diferencia de qué es SharePoint quien se encarga de realizar el mantenimiento de los índices y no el SQL Server subyacente. Esta indexación puede ser necesarias en situaciones como las siguientes:

  • Estamos utilizando la características de unicidad de columnas de SharePoint 2010, de manera que cada vez que queremos configurar una columna para que tenga valores único será necesario realizar su indexación.
  • Tenemos una columna de tipo lookup en nuestra lista y configuramos el comportamiento referencial de la misma para habilitar la estrategia de borrado (en cascada o no), por lo que será necesario de nuevo indexar esta columna.
  • Optamos por indexar todas o parte de las columnas de la lista.

Por ejemplo, a nivel de lista:

  • A través de la página de configuración de la lista podemos acceder a los índices disponibles actualmente para la lista haciendo clic sobre el enlace “Columnas indizadas”.
  • En la página que se muestra podemos ver los índices disponibles y editarlos.
  • Podremos crear nuevos índices en base a otras columnas de la lista y teniendo en cuenta que no todos los tipos de columna se pueden indizar.
image image image
  image  

Pero, ¿Por qué puede ser importante indexar columnas en una lista de SharePoint? Pues por cuestiones de rendimiento, ya que la indexación de columnas mejora el rendimiento en el caso de consultas que usen la(s) columna(s) indexadas, se realicen joins, operaciones de ordenado, etc. Por ejemplo, si tenemos una lista que contiene unos 20.000 elementos y queremos consultar los primeros 500 elementos de la misma ordenados por la columna Title, que no está indexada, nos encontraremos que SharePoint se recorre los 20.000 elementos de la lista para poder ordenarlos por Title y luego nos devuelve esos 500 primeros elementos, de manera que nos encontraríamos ante una consulta pesada. Si indexamos la columna Title, la consulta es mucho más ligera ya que accedemos de ofrma directa a los 500 primeros elementos ordenados por Title sin necesidad de buscar en el conjunto total de elementos de la lista. Por supuesto, el uso de índices hay que realizarlo con cuidado y no usarlos por sistemas ya que penalizan el rendimiento en operaciones de tipo CRUD y necesitan de almacenamiento. ¿Cuántos índices puedo tener por lista? Un máximo de 20.