Comparar Selects mediante SP

03/11/2009 - 17:39 por Samuel-SMH | Informe spam
Hola Foro:

Cual de estas instrucciones es más rapida?

****1era opcion; Tengo en un SP:

USE [Northwind]
GO
ALTER PROCEDURE [dbo].[coop_Territories_GetAll] AS
SELECT
[TerritoryID],
[TerritoryDescription],
[RegionID],
dbo.coop_Region_GetDescription(RegionID) AS RegionString
FROM [dbo].[Territories]

Esta es la funcion:

ALTER FUNCTION [dbo].[coop_Region_GetDescription]
(
@RegionID int
)
RETURNS varchar(100)
AS
BEGIN
RETURN (
SELECT [RegionDescription]
FROM [Region]
WHERE
[RegionID] = @RegionID
)
END

*****2da opcion; Tengo en un SP con el siguiente Select: En el cual uno 2
tablas trayendo el nombre de la Region

USE [Northwind]
GO
ALTER PROCEDURE [dbo].[coop_Territories_GetAll] AS

SELECT
[TerritoryID],
[TerritoryDescription],
Territories.[RegionID], Region.RegionDescription AS RegionString
FROM dbo.Territories left join dbo.Region on Territories.RegionID =
Region.RegionID


-Me gustaria su opinión , aparentemente son iguales , pero cual tendría
mejor performance??
-Probando en el SQL SERVER PROFILER ambas resultan con un tiempo similar en
milisegundos, es más me atreveria a decir que aquel que llama a la función
es mas rápida;
pero claro solo hice pruebas con Northwid y pocos datos.
-Alguien que pueda dar una explicación mas exacta de lo que hace la 2da
Opción por la cual hace que demore algo mas??

Gracias de antemano.

SAMUEL S.M.H
Lima-Perú
 

Leer las respuestas

#1 Carlos Sacristan
03/11/2009 - 17:49 | Informe spam
¿Has echado un vistazo al plan de ejecución de ambas consultas?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Samuel-SMH" wrote in message
news:
Hola Foro:

Cual de estas instrucciones es más rapida?

****1era opcion; Tengo en un SP:

USE [Northwind]
GO
ALTER PROCEDURE [dbo].[coop_Territories_GetAll] AS
SELECT
[TerritoryID],
[TerritoryDescription],
[RegionID],
dbo.coop_Region_GetDescription(RegionID) AS RegionString
FROM [dbo].[Territories]

Region
Esta es la funcion:

ALTER FUNCTION [dbo].[coop_Region_GetDescription]
(
@RegionID int
)
RETURNS varchar(100)
AS
BEGIN
RETURN (
SELECT [RegionDescription]
FROM [Region]
WHERE
[RegionID] = @RegionID
)
END

*****2da opcion; Tengo en un SP con el siguiente Select: En el cual uno 2
tablas trayendo el nombre de la Region

USE [Northwind]
GO
ALTER PROCEDURE [dbo].[coop_Territories_GetAll] AS

SELECT
[TerritoryID],
[TerritoryDescription],
Territories.[RegionID], Region.RegionDescription AS RegionString
FROM dbo.Territories left join dbo.Region on Territories.RegionID =
Region.RegionID


-Me gustaria su opinión , aparentemente son iguales , pero cual tendría
mejor performance??
-Probando en el SQL SERVER PROFILER ambas resultan con un tiempo similar
en milisegundos, es más me atreveria a decir que aquel que llama a la
función es mas rápida;
pero claro solo hice pruebas con Northwid y pocos datos.
-Alguien que pueda dar una explicación mas exacta de lo que hace la 2da
Opción por la cual hace que demore algo mas??

Gracias de antemano.

SAMUEL S.M.H
Lima-Perú


Preguntas similares