Una de las primeras preguntas que me gustaría hacer o me gustaría que conozcan la respuesta, aunque va dirigida para las personas que tienen poco conocimiento del tema.
Que es SQL Server, es uno de los principales o podríamos decir que es el principal gestor de base de datos el cual es utilizado para el análisis e inteligencia empresarial, es un sistema basado en el lenguaje Transact-SQL, y lo mejor esta a nivel de on premises y en la nube.
Sirve para administrar y almacenar los datos en base de datos relacionales sin ningún tipo de complicaciones, que gracias a su interfaz visual en conjunto con las herramientas que tiene viene a ser algo vital para las empresas especialmente las que trabajan con webs donde tienen que registrar usuarios que inicien sesión.
Ya conociendo un poco del tema, podemos pasar a ver la parte de las optimizaciones de las bases de datos, porque como todos conocemos que la soluciones o las reparaciones de cualquier consulta erróneas, también como la resolución del rendimiento llegan a implicar horas para la investigación, pero podemos reducir drásticamente todo ese tiempo logrando identificar algunos patrones de diseño comunes que son indicativos de un TSQL de bajo rendimiento.
1. Hay una forma muy buena para hacer consulta de manera eficiente por medio de una cláusula llamada WHERE que se utiliza con un operador, pero hay un operador muy común que da mucha ineficiencia si no saben utilizarlo, y hay muchas empresas que hasta han pensado en eliminarlo y no utilizarlos en sus consultas, el operador OR por ser inclusivo no se puede procesar en una sola operación. Entonces se procesa por separado y luego se concatenan para devolver el resultado ordenado, pero cuando trabaja en varias columnas y tablas el operador OR tiende a tener un rendimiento muy malo. Para mejorar el rendimiento lo recomendable es dividirlo en consultas mas pequeñas o como mencionamos al comienzo eliminarlo.
2. Cadenas Comodines. Cuando tratamos con las búsquedas de cadenas de la mejor manera eficiente llega a ser un gran desafía, motivo que hay mas formas de procesarlas de una manera ineficiente que la correcta. Un ejemplo es cuando se buscan una ocurrencia colocando el signo de %antes y después%, si lo colocamos antes estamos imposibilitando el uso de cualquier índice ascendente y paso lo mismo cuando lo colocamos al final, en este caso pude llegar a se aceptable para tablas pequeñas porque para saber si existe una subcadena dentro de una columna de texto tendríamos que desplazarnos por todos los caracteres de cada fila para lograr encontrar una ocurrencia, al contrario si lo hacemos en donde hay datos de gran tamaño, llega a hacer muy laborioso y tedioso el tener que esperar.
Para poder hacer un buen uso lo primero que tenemos que hacer es reevaluar la aplicación, para conocer si los usuarios realmente buscaran en todas las partes una cadena determinada, si no lo van a ocupar se puede eliminar y nos ahorramos el problema. Adicional de eso podemos aplicar otros filtros con la finalidad de reducir el tamaño de los datos, buscar la cadena principal en lugar de hacer búsqueda con comodines, si la indexación de texto esta disponible podemos utilizarlo y por último podemos implementar una solución hash o n-gram de consulta.
También para la optimización tenemos la contención. Recordemos que cuando nosotros realizamos cualquier operación contra los datos, existen bloqueos contra cierta cantidad de datos esto es con el fin de poder garantizar que los resultados sean consistentes y también que no interfieran con otras consultas que otros usuarios podrían estar haciendo en contraposición de los mismos datos.
Y así existen muchos otros factores que podrían ayudar con la optimización de las base de datos, nosotros en ITCO te podemos ayudar y asesorar.