Problema extraño con filtros

04/12/2008 - 23:26 por Ricardo Uribe Zegarra | Informe spam
Hola grupo,

Tengo un problema, una consulta que funcionaba muy bien
ahora se ha puesto lenta.

Llamo al sgte reporte desde mi aplicacion asi

select top 50 * from MostrarFichadeVenta y se demora
6 segundos, tambien he probado desde el analizador de
consultas.

Pero cuando lo llamo sin poner el top o poniendolo con
PERCENT se demora 1 seg a menos.

CREATE VIEW dbo.MostrarFichadeVenta
AS
SELECT TOP 100 PERCENT FV.Serie AS Serie,
FV.Numero AS Numero, C.Nombres + ' ' + C.Apellidos AS Cliente,
FV.Persona1, FV.Persona2, FV.Persona3, FO.FechaEmision,
MFV.PagoTotal, MFV.Total as [Total Cot.], MFV.Saldo,
EFO.Descripcion AS Estado
FROM dbo.FichaVenta FV INNER JOIN
dbo.Clientes C ON FV.CodigoCliente = C.CodigoCliente INNER JOIN
dbo.MontosFichaVenta MFV ON MFV.Serie = FV.Serie AND
MFV.Numero = FV.Numero INNER JOIN
dbo.FichaObra FO ON FV.Serie = FO.Serie AND
FV.Numero = FO.Numero INNER JOIN
dbo.EstadoFichaObra EFO ON FO.CodigoEstado = EFO.CodigoEstado
GROUP BY FV.Serie, FV.Numero, C.Nombres + ' ' + C.Apellidos,
FV.Persona1, FV.Persona2, FV.Persona3,
FO.FechaEmision, EFO.Descripcion, MFV.PagoTotal,
MFV.Total, MFV.Saldo
ORDER BY FO.FechaEmision Desc, FV.Numero Desc

Lo extraño es que tambien tengo otra tabla a la que le hago
una consulta select * from tabla y no se demora nada, pero
cuando le agrego un where fecha between fecha and fecha se
demora bastante.

Deseo saber si a alguien le ha pasado lo mismo, y si tengo
que revisar algo en la configuracion de mi base de datos o tengo
que hacer al gun tipo de mantenimiento a la base de datos.

Muchas gracias por su ayuda.
 

Leer las respuestas

#1 Alejandro Mesa
05/12/2008 - 01:56 | Informe spam
Ricardo Uribe Zegarra,

Solo te comento que SQL Server no garantiza que el resultado de una
sentencia "select" este ordenado, si no se usa la clausula "order by" en
ella. Incluir la clausula "order by" dentro de una vista carece de todo
sentido, porque tienes que volver a usar la misma clausula cuando selecciones
desde ella.

select c1, c2, ..., cn
from vista_con_order_by

La sentencia anterior no tiene porque dar una resultado ordenado. Para
garantizar que el resultado esta ordenado, debes usar:

select c1, c2, ..., cn
from vista_con_order_by
order by c1, ...


AMB


"Ricardo Uribe Zegarra" wrote:

Hola grupo,

Tengo un problema, una consulta que funcionaba muy bien
ahora se ha puesto lenta.

Llamo al sgte reporte desde mi aplicacion asi

select top 50 * from MostrarFichadeVenta y se demora
6 segundos, tambien he probado desde el analizador de
consultas.

Pero cuando lo llamo sin poner el top o poniendolo con
PERCENT se demora 1 seg a menos.

CREATE VIEW dbo.MostrarFichadeVenta
AS
SELECT TOP 100 PERCENT FV.Serie AS Serie,
FV.Numero AS Numero, C.Nombres + ' ' + C.Apellidos AS Cliente,
FV.Persona1, FV.Persona2, FV.Persona3, FO.FechaEmision,
MFV.PagoTotal, MFV.Total as [Total Cot.], MFV.Saldo,
EFO.Descripcion AS Estado
FROM dbo.FichaVenta FV INNER JOIN
dbo.Clientes C ON FV.CodigoCliente = C.CodigoCliente INNER JOIN
dbo.MontosFichaVenta MFV ON MFV.Serie = FV.Serie AND
MFV.Numero = FV.Numero INNER JOIN
dbo.FichaObra FO ON FV.Serie = FO.Serie AND
FV.Numero = FO.Numero INNER JOIN
dbo.EstadoFichaObra EFO ON FO.CodigoEstado = EFO.CodigoEstado
GROUP BY FV.Serie, FV.Numero, C.Nombres + ' ' + C.Apellidos,
FV.Persona1, FV.Persona2, FV.Persona3,
FO.FechaEmision, EFO.Descripcion, MFV.PagoTotal,
MFV.Total, MFV.Saldo
ORDER BY FO.FechaEmision Desc, FV.Numero Desc

Lo extraño es que tambien tengo otra tabla a la que le hago
una consulta select * from tabla y no se demora nada, pero
cuando le agrego un where fecha between fecha and fecha se
demora bastante.

Deseo saber si a alguien le ha pasado lo mismo, y si tengo
que revisar algo en la configuracion de mi base de datos o tengo
que hacer al gun tipo de mantenimiento a la base de datos.

Muchas gracias por su ayuda.




Preguntas similares