Para conocer en detalle estas reglas te remito a las notas oficiales del producto: 896891 y 1376447. Según la segunda nota, podemos crear índices en SAP Business One, previa aprobación de personal de soporte del producto y teniendo en cuenta que en cada actualización de versión los índices creados serán eliminados por el proceso de “upgrade” de la sociedad.
Por lo tanto, recomiendo que si necesitas crear uno o varios índices y cumples con las reglas marcadas por SAP, cuentes con dos scripts:
- Script 1: Eliminaría todos los índices creados por ti en la base de datos. A usar antes de un “upgrade” de una base de datos perteneciente a una sociedad SAP Business One.
- Script 2: Crearía los índices en la base de datos una vez se haya completado el “upgrade” de tal base de datos.
Veamos un ejemplo sencillo donde se aprecia cómo un índice puede ayudarnos a mejorar la experiencia del usuario. Contamos con una tabla definida por el usuario (UDT) que tiene 163640 registros
Esta cantidad de registros puede influir negativamente en todas las consultas en las que aparece la tabla. Al margen de su significado, esta tabla contiene un campo de fecha llamado U_Fecha.
Necesitamos saber cuál es el máximo valor del campo U_Fecha en nuestra tabla. Escribiríamos esta sencilla consulta.
El mapa de ejecución de dicha consulta nos muestra la información.
El número de filas estimado es de 163640, es decir, se recorren todas las filas de la tabla para obtener el mayor valor del campo fecha. A la vista de la consulta y de la tabla, crearemos un índice noncluster para el campo U_Fecha.
Una vez creado el índice, lanzamos de nuevo nuestro mapa estimado de ejecución de la consulta usada en el ejemplo.
Observamos que el número de filas estimadas a recorrer se ha reducido a 1, gracias al uso del índice [@ITOP_P05].[IDXP05_FECHA].
Una mejora notable… Cualquier comentario será bienvenido.