vistas materializadas

09/05/2006 - 13:05 por e-lores | Informe spam
Tengo una vista que trabaja sobre muchos registros y además hace
agrupaciones, sumas, etcétera. Por eso me interesa optimizarla.

¿Cómo se crea una vista materializada en SQL Server 2000? ¿Dónde puede
encontrar informacíón?

Gracias.
Ernesto.

Preguntas similare

Leer las respuestas

#1 Miguel Egea
09/05/2006 - 13:06 | Informe spam
Busca vista indexadas en los libros en pantalla, creo que es justo lo que
estás buscando.

Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar para
obtener soluciones y educación avanzada para la plataforma completa de
sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Tengo una vista que trabaja sobre muchos registros y además hace
agrupaciones, sumas, etcétera. Por eso me interesa optimizarla.

¿Cómo se crea una vista materializada en SQL Server 2000? ¿Dónde puede
encontrar informacíón?

Gracias.
Ernesto.

Respuesta Responder a este mensaje
#2 e-lores
09/05/2006 - 16:59 | Informe spam
Vistas indexadas era lo que andaba buscando, aunque he descubierto que no me
sirven. Intentaré buscar otra solución.

Gracias.

"Miguel Egea" ha escrit en el missatge dels
grups de discussió:
Busca vista indexadas en los libros en pantalla, creo que es justo lo que
estás buscando.

Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Tengo una vista que trabaja sobre muchos registros y además hace
agrupaciones, sumas, etcétera. Por eso me interesa optimizarla.

¿Cómo se crea una vista materializada en SQL Server 2000? ¿Dónde puede
encontrar informacíón?

Gracias.
Ernesto.





Respuesta Responder a este mensaje
#3 Miguel Egea
09/05/2006 - 17:00 | Informe spam
Cuentanos cual es el objetivo :)


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar para
obtener soluciones y educación avanzada para la plataforma completa de
sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Vistas indexadas era lo que andaba buscando, aunque he descubierto que no
me sirven. Intentaré buscar otra solución.

Gracias.

"Miguel Egea" ha escrit en el missatge dels
grups de discussió:
Busca vista indexadas en los libros en pantalla, creo que es justo lo que
estás buscando.

Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Tengo una vista que trabaja sobre muchos registros y además hace
agrupaciones, sumas, etcétera. Por eso me interesa optimizarla.

¿Cómo se crea una vista materializada en SQL Server 2000? ¿Dónde puede
encontrar informacíón?

Gracias.
Ernesto.









Respuesta Responder a este mensaje
#4 e-lores
09/05/2006 - 17:34 | Informe spam
Tengo una tabla donde uno de los registros es la hora (de 1 a 24). He hecho
la siguiente vista 'horizontal' de los datos

SELECT identificador,
YEAR(fecha_MHE) AS AÑO , MONTH(fecha_MHE) AS MES , DAY(fecha_MHE) AS DIA,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 0 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H01,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 1 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H02,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 2 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H03,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 3 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H04,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 4 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H05,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 5 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H06,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 6 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H07,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 7 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H08,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 8 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H09,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 9 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H10,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 10 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H11,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 11 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H12,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 12 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H13,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 13 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H14,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 14 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H15,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 15 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H16,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 16 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H17,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 17 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H18,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 18 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H19,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 19 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H20,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 20 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H21,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 21 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H22,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 22 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H23,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 23 THEN activaSaliente_MHE ELSE -1
END) + COUNT(*) - 1 AS H24
FROM MedidaHoraria
GROUP BY identificador, DAY(fecha_MHE), MONTH(fecha_MHE), YEAR(fecha_MHE)

La cantidad de registros es enorme y ha esta vista le cuesta un poquillo.
Pensando estratégias para optimizar se me ocurrió lo de las vistas indexadas
pero para esta en concreto no se puede crear un índice. Además no creo que
sea tampoco muy óptimo porque se añaden registros constantemente.

Seguramente optaré por utilizar triggers que me gestionen los datos por
duplicado en otra tabla ya con este formato.

¿Se os ocurre otra forma de optimización?
Gracias.


"Miguel Egea" ha escrit en el missatge dels
grups de discussió:%
Cuentanos cual es el objetivo :)


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Vistas indexadas era lo que andaba buscando, aunque he descubierto que no
me sirven. Intentaré buscar otra solución.

Gracias.

"Miguel Egea" ha escrit en el missatge dels
grups de discussió:
Busca vista indexadas en los libros en pantalla, creo que es justo lo
que estás buscando.

Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Tengo una vista que trabaja sobre muchos registros y además hace
agrupaciones, sumas, etcétera. Por eso me interesa optimizarla.

¿Cómo se crea una vista materializada en SQL Server 2000? ¿Dónde puede
encontrar informacíón?

Gracias.
Ernesto.













Respuesta Responder a este mensaje
#5 Maxi
09/05/2006 - 17:38 | Informe spam
Hola, no seria mejor resolver esto con una funcion de usuario?


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"e-lores" escribió en el mensaje
news:
Tengo una tabla donde uno de los registros es la hora (de 1 a 24). He
hecho la siguiente vista 'horizontal' de los datos

SELECT identificador,
YEAR(fecha_MHE) AS AÑO , MONTH(fecha_MHE) AS MES , DAY(fecha_MHE) AS DIA,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 0 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H01,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 1 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H02,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 2 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H03,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 3 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H04,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 4 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H05,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 5 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H06,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 6 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H07,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 7 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H08,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 8 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H09,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 9 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H10,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 10 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H11,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 11 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H12,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 12 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H13,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 13 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H14,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 14 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H15,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 15 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H16,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 16 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H17,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 17 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H18,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 18 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H19,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 19 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H20,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 20 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H21,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 21 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H22,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 22 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H23,
SUM(CASE WHEN DATEPART(hour, fecha_MHE) = 23 THEN activaSaliente_MHE
ELSE -1 END) + COUNT(*) - 1 AS H24
FROM MedidaHoraria
GROUP BY identificador, DAY(fecha_MHE), MONTH(fecha_MHE), YEAR(fecha_MHE)

La cantidad de registros es enorme y ha esta vista le cuesta un poquillo.
Pensando estratégias para optimizar se me ocurrió lo de las vistas
indexadas pero para esta en concreto no se puede crear un índice. Además
no creo que sea tampoco muy óptimo porque se añaden registros
constantemente.

Seguramente optaré por utilizar triggers que me gestionen los datos por
duplicado en otra tabla ya con este formato.

¿Se os ocurre otra forma de optimización?
Gracias.


"Miguel Egea" ha escrit en el missatge dels
grups de discussió:%
Cuentanos cual es el objetivo :)


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Vistas indexadas era lo que andaba buscando, aunque he descubierto que
no me sirven. Intentaré buscar otra solución.

Gracias.

"Miguel Egea" ha escrit en el missatge
dels grups de discussió:
Busca vista indexadas en los libros en pantalla, creo que es justo lo
que estás buscando.

Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma
completa de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"e-lores" escribió en el mensaje
news:
Tengo una vista que trabaja sobre muchos registros y además hace
agrupaciones, sumas, etcétera. Por eso me interesa optimizarla.

¿Cómo se crea una vista materializada en SQL Server 2000? ¿Dónde puede
encontrar informacíón?

Gracias.
Ernesto.

















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida