Uso de CROSS APLY con Funciones que devuelven tablas

Vamos a imaginar un escenario tipo con dos tablas en las que existe una relación 1:n. Una tabla será de Clientes y la otra con los distintos Teléfonos de cada uno de los clientes.


El objetivo es devolver un listado con todos los clientes y el primer teléfono asociado a cada uno. Es un ejemplo muy simple, que nos servirá para aprender a no hacer las cosas como primero nos viene a la mente, sino siempre aplicando la mayor optimización posible. Insertemos ahora algunos registros de ejemplo:


Una primera solución podría ser:


Pero si creamos una función que nos devuelva ese primer valor y luego la aplicamos con un CROSS APPLY a la tabla Cliente obtenemos las mismas tuplas, pero de manera más óptima. 





Prueba a aplicar este tipo de queries en tu base de datos, que seguro tienes por ahí muchos cursores y queries tipo la primera solución anterior, y ya se sabe: los cursores en T-SQL no son muy óptimos, y como vemos tampoco son necesarios casi nunca. Nos vemos.

No hay comentarios :

Publicar un comentario

Buscar en el Blog: