1 0 Tag Archives: Optimizacion
post icon

Crear Consultas SQL con filtros dinámicos de manera eficiente

Crear consultas SQL con filtros dinámicos siempre ha sido un tema controversial, especialmente en cuanto a que técnicas de implementación son mejores. Y es muy común utilizarlas en las áreas que se dedican al reporting.

Lo más común que se suele hacer es caer en el error de armar la query SQL de forma dinámica dentro de la aplicación, esto puede provocar fallos en la seguridad y problemas de rendimiento, otra forma común de implementar es con SQL Dinámico, que dependiendo de como se implementa también (Continuar Leyendo sobre Crear Consultas SQL con filtros dinámicos de manera eficiente)

post icon

Generar un rango de filas para usar como producto cartesiano o como conjuto de datos en SQL Server

Otra de las tantas interrogantes que todo programador de SQL suele hacerse, es como generar filas dinámicamente sin leer datos de tablas, para cruzarlo con otras tablas o vistas y así obtener un producto cartesiano o un conjunto de resultados para unirlos con otros conjuntos. La típica solución suele ser usar un bucle como un while o un cursor, para insertar datos en alguna variable tipo tabla o una tabla temporal los cuales presentan serios problemas de rendimiento. De hecho, haremos unas pruebas con un millón de filas creadas en discos distintos, el primer (Continuar Leyendo sobre Generar un rango de filas para usar como producto cartesiano o como conjuto de datos en SQL Server)

post icon

Parameters.Add vs Parameters.AddWithValue

Pareciera trivial usar uno u otro método para enviar parámetros desde .Net a las bases de datos, pero no lo es. Uno utiliza un método implícito (Parameters.AddWithValue) de conversión de datos y otro explicito (Parameters.Add)

Utilizar el método implícito es más sencillo pero puede acarrear varios problemas y a muchas veces no son fáciles de detectar:

Cuellos de botellas

Cuando escribía el post sobre las diferencias entre NVARCHAR y VARCHA de SQL Server hacía mención sobre el rendimiento que pueden tener  los tipos de datos y el envío de parámetros sin tipificarlos (Continuar Leyendo sobre Parameters.Add vs Parameters.AddWithValue)

post icon

[TSQL] NVARCHAR vs VARCHAR

Esta es una pregunta muy común entre los que comienzan a utilizar el motor de Microsoft, y no por ello trivial. A muchos le parece trivial, pero en base de datos medianas y grandes puede tener un impacto fuertemente negativo si no se lo utiliza correctamente.

Lo común entre ambos es que son de longitud variable, definidas siempre por un tope máximo. (Continuar Leyendo sobre [TSQL] NVARCHAR vs VARCHAR)

post icon

Expresiones regulares útiles

El tema de las expresiones regulares puede ser bastante engorroso o tedioso de aplicar especialmente cuanto más complejo es lo que hay que validar, pero es la mejor manera de crear validaciones, en cuanto a eficiencia y costo mantenimiento que complejos algoritmos que trabajan con cadenas de texto.

La idea de este articulo no es desmenuzar a fondo las expresiones regulares sino publicar algunas más utilizadas ahora (Continuar Leyendo sobre Expresiones regulares útiles)

10 diciembre 2012
post icon

Clausula IN vs BETWEEN AND [SQL Tunning]

Para comprender éste articulo recomiendo que haga una lectura introductoria sobre la interpretación de los planes de ejecución en SQL Server.

Lo que demostraremos será la ventaja en rendimiento del BETWEEN AND sobre la cláusula IN, pero sólo en el contexto de valores numericos correlativos, ya que si es de otro tipo de dato o no son correlativos no aplicará este concepto.

Para explicar vamos a crear un ejemplo sencillo que demostrará lo expuesto, para ello vamos a valernos de la base de datos AdventureWorks2008R2, aquí donde conseguir e instalar. (Continuar Leyendo sobre Clausula IN vs BETWEEN AND [SQL Tunning])

post icon

Optimizar la Memoria RAM en SQL Server de 32 y 64 bits [SQL Tunning]

Ya es sabido por todos que los sistemas operativos con arquitectura de 32bits, puede sólo utilizar poco más de 3GB de RAM lo que hace un poco frustrante la experiencia cuando tienes un servidor con mucha memoria RAM y no la puedes usar toda.

Imagina tener instalado 128 GB de RAM y no puedas utilizar practicamente 124GB por culpa de la arquitectura de 32bits. Tambien podría pasar esto si el Windows es de 64bits pero SQL Server sólo de 32bits.

Para aprovechar toda la RAM vamos a configurar el servidor de manera que lo aproveche. Ésta configuración también es válida para arquitecturas de 64bits, no porque no puedan usar toda la RAM, (Continuar Leyendo sobre Optimizar la Memoria RAM en SQL Server de 32 y 64 bits [SQL Tunning])

post icon

Buscar cursores abiertos en T-SQL para optimizar recursos

Ayer en el Twitter me preguntaban sobre el excesivo consumo de memoria RAM por parte de MSSQL Server y qué se podía hacer para evitarlo. No estuve muy interiorizado con el problema en sí, pero me sirvió para inspirarme y escribir un articulo más sobre búsqueda y corrección de problemas en la base de datos.

El consumo de RAM en SQL Server no siempre es un problema, ya que si se configuró para que consuma todos los recursos que están al alcance, lo hará. Ya que comenzará a guardar en caché las consultas que se ejecutan con mayor frecuencia para responder con mayor velocidad a la demanda. Pero no todo es color de rosa (Continuar Leyendo sobre Buscar cursores abiertos en T-SQL para optimizar recursos)

post icon

Optimizar las querys con cláusula LIKE en SQL [SQL-Tunning]

Continuando con los tips para optimizar nuestras querys SQL, trataremos unas de las clásulas que más ralentizan éstas. El operador LIKE.

La definición que exponen en la TechNet me gusta y dice asi:

Determina si una cadena de caracteres específica coincide con un patrón especificado. Un patrón puede contener caracteres normales y caracteres comodín. Durante la operación de búsqueda de coincidencias de patrón, los caracteres normales deben coincidir exactamente con los caracteres especificados en la cadena de caracteres. Sin embargo, los caracteres comodín pueden coincidir con fragmentos arbitrarios de la cadena. La utilización de caracteres comodín hace que el operador LIKE sea más flexible que los operadores de comparación de cadenas = y !=.

Como se tiene que trabajar con cadenas de texto, dentro de otras cadenas más grandes normalmente, es un proceso lento para la comparación. Muchas veces (Continuar Leyendo sobre Optimizar las querys con cláusula LIKE en SQL [SQL-Tunning])

post icon

Tutorial básico para interpretar el plan de ejecución de SQL Server

Para realizar SQL Tunning a nuestras bases de datos, en la mayoría de los casos necesitaremos paciencia y tiempo para analizar con detenimiento como está funcionando todo, así en base a eso, determinar medidas de acción para la optimización.

Para ver el plan de ejecución de un query es muy sencillo en SSMS, podemos ver el Estimado y el Real:

Plan de Ejecución Estimado: Desde el Menú Consultas -> Mostrar Plan de Ejecución Estimado o con la combinación de teclas Ctrl + L. Esto no ejecutará la query sino más bien lo analizará y mostrará una aproximación del costo de su ejecución.

Plan de Ejecución Real: Desde el Menú Consultas -> Incluir Plan (Continuar Leyendo sobre Tutorial básico para interpretar el plan de ejecución de SQL Server)

Página 1 de 41234