Nombrado de tablas y columnas de una base de datos SQL

Bases de datos

Siempre he pensado que la nomenclatura que fijemos para la base de datos, si se sigue correctamente nos puede traer muchos beneficios.

En este artículo se nos proponen unas cuantas normas y nos muestran como nos beneficia a la hora de visualizar nuestro schema o de hacer ciertas operaciones masivas como eliminar y recrear todas las FK’s.

http://www.codeproject.com/Articles/1065295/SQL-Server-Table-and-Column-Naming-Conventions

Para mi gusto hay algunas cuestiones que no me acaban de gustar como los prefijos pk_ y fk_ que lo preferiría como sufijo, pero puede que facilite luego ciertas tareas.

A ver si un día hago el mio propio, 😀

Enjoy it!

Entendiendo el SQL Server Query Optimizer

Bases de datos

Os dejamos aquí un buen artículo sobre como funciona el analizador de consultas de SQL Server.

No es fácil entender los diagramas así que este documento puede ayudar algo.

https://www.simple-talk.com/sql/sql-training/the-sql-server-query-optimizer/

Si queréis un consejo: acostumbraros a utilizarlo siempre incluso para las consultas más sencillas. De esta forma llegaremos a entender las optimizaciones complejas.

Saludos!

Mínimo entre 2 números en SQL Server

Bases de datos

Parece mentira pero es cierto… en SQL Server no tenemos ninguna función para saber el mínimo o máximo entre 2 números.

Podéis usar la alternativa del ‘case when …’, pero si lo vais a utilizar bastante o queréis que el código sql quede un poco más legible, os recomendamos usar estas funciones de usuario.

Son unas funciones muy sencillas y es muy fácil usarlas.

Os dejamos una para el MIN y otra para el MAX, tanto para enteros (int) como para flotantes (float).

Aquí tenéis el código:


create function my_max(@val1 int, @val2 int)
returns int
as
begin
    if @val1 > @val2
        return @val1
    return isnull(@val2,@val1)
end
GO

create function my_min(@val1 int, @val2 int)
returns int
as
begin
    if @val1 < @val2
        return @val1
    return isnull(@val2,@val1)
end
GO


create function my_maxfloat(@val1 float, @val2 float)
returns float
as
begin
    if @val1 > @val2
        return @val1
    return isnull(@val2,@val1)
end
GO

create function my_minfloat(@val1 float, @val2 float)
returns float
as
begin
    if @val1 < @val2
        return @val1
    return isnull(@val2,@val1)
end
GO

Espero que os sea útil!

Exportar tabla a XML en SQLServer

Bases de datos

A partir de SQLServer 2005 es posible construir la salida de nuestra consulta en formato XML.

Esto nos puede venir muy bien para exportar datos, o incluso para construir un feed RSS, sin tener que recorrer una consulta normal para ir construyendo el ‘string’ en el código.

Un ejemplo de como es este tipo de consultas SQL es:

SELECT TOP 2 ID_TABLA as 'id' FROM TABLA as item FOR XML AUTO, ROOT ('feed'), ELEMENTS 

Cuya salida es:

<feed> 
    <item>
        <id>1</id>
    </item>
    <item>
        <id>2</id>
    </item>
</feed>

Para ver mas ejemplos, y ver como podemos construir tanto los nodos como los atributos de nuestro XML mediante los datos de nuestras tablas, podéis ver este fantástico post al respecto.

Sugerencias de rendimiento para SQL Server con Qure Optimizer

Bases de datos

Otro programita que nos puede hacer la vida más fácil a la hora de mejorar el rendimiento de una base de datos SQL Server.

Qure Optimizer de DBSophic funciona de la siguiente manera:

Sacamos una traza de nuestra base de datos en producción con, por ejemplo, el SQL Profiler.

Instalamos y configuramos el programa para que tenga acceso a la base de datos y le pasamos la traza que hemos creado (hay que crearla usando una plantilla especial de Qure).

Qure analiza la traza respecto a la estructura de nuestra base de datos y nos da un montón de sugerencias a realizar tanto de las consultas, como de los indices o cambios en el schema que sean más convenientes.

Para que te sea más fácil poner esos cambios en producción, Qure te los ordena según el impacto en el rendimiento y te facilita los scripts de cambios de estructura, y te señala los cambios que debes realizar en tus consultas.

Solo con la trial ya verás de lo que es capaz el programa y mejorar bastante el rendimiento, y si ademas aprendemos del porqué de las recomendaciones, podremos inferir esa lógica en el resto de la aplicación.