jueves, 29 de diciembre de 2011

Selects Anidados o Inner Join


Sé que muchos de nosotros, más de una vez, hemos usado selects anidados. ¿No saben a qué me refiero? Sí estas largas sintaxis:

Select   Nombres,
                apellidos,
                (Select descripción from ubigeo u where a.ubigeo = u.ubigeo) distrito,
                Dirección
From persona

Aunque parezca insignificante esta línea “(Select descripción from ubigeo u where a.ubigeo = u.ubigeo)” consume gran cantidad de recursos al momento de ejecutar la consulta. Esto debido a que por cada registro que devuelva su consulta se ejecutara el select de ubigeo, por ejemplo si su consulta devuelve 10 000 registros el servidor le hará select 10 000 veces a la tabla ubigeo. Quizá con pocos registros no noten la diferencia, pero cuando manejen una gran cantidad créanme que el tiempo de respuesta de sus consultas realmente SI IMPORTA.

Después de lo anteriormente expuesto la mejor manera de hacer ese select seria:

Select   P.Nombres,
                P.apellidos,
                U.descripción distrito,
                P.Dirección
From persona P
Inner Join Ubigeo U On P.ubigeo = U.ubigeo

Donde:

Después la cláusula “inner join” debe de ir la tabla con la que vamos a unir la consulta, luego con la cláusula “On” procedemos a indicar los campos clave para indexar  ambas tablas

De esta manera solo invocamos a la tabla una sola vez.
Cabe recomendar que para un mejor desempeño lo más recomendable es que los campos a indexar sean PK(Primary Key) o FK(Foreing Key).

El uso de Joins nos ayudara a mejorar el rendimiento de la consulta, ahorrando tiempo al momento de la ejecución.

martes, 4 de octubre de 2011

El comienzo de una idea llamada blog...


Umm a ver pues que intento con esto... pues tratar de poner mi granito de arena a cada una de las personas que como yo a veces se la pasan buscando uno que otro tip medio yuca en la web ya sea de Power Builder, PL/SQL o Transact SQL, sí, yo tambien al igual que todos me he pasado varias horas buscando, es por eso que empezare publicando alguna de las cosas que encuentre a ver si le sirve a la gente que pase por aqui....