Uso básico de índices en Microsoft SQL Server y SAP Business One
Cuando las tablas de una base de datos comienzan a contar con un gran número de registros, se hace necesario disponer de estructuras que nos permitan acelerar nuestras consultas.
Es posible optimizar consultas relacionadas con SAP Business One creando los índices oportunos y respetando las reglas marcadas por SAP en este sentido.
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.
Sobre el Autor
Miguel Fernandez Cejas
Director General.
Socio fundador de Itop, empresa de implantación de soluciones tecnológicas, factoría de software y formación online. Ingeniero Informático con cursos de postgrado en áreas tan diversas como la inteligencia artificial, la gestión de empresas o la calidad. Más de 25 años de experiencia en el mundo de las Tecnologías de la Información trabajando para distintas empresas nacionales e internacionales.
Su pasión por la tecnología unida a su variada experiencia, le impulsa a desarrollar distintos proyectos empresariales donde aplica las nuevas tecnologías al turismo, la sociología, el marketing o la formación.
Actualmente trabaja en temas relacionados con aplicaciones de gestión, Business Intelligence, Big Data, Mobile/Apps e Internet de las Cosas.