2010-03-23 27 views
6

Acceso a varias tablas de forma remota a través de DB Link. Están muy normalizados y los datos en cada uno tienen fecha de vigencia. De los millones de registros en cada tabla, solo un subconjunto de ~ 50k son registros actuales.¿Cómo puedo acelerar las consultas contra tablas a las que no puedo agregar índices?

Las tablas están administradas internamente por un producto comercial que tendrá un gran ajuste si agrego índices o si realizo modificaciones en sus tablas de alguna manera.

¿Cuáles son mis opciones para acelerar el acceso a estas tablas?

+1

¿Ese programa también bloquea tablas particionadas? Porque si no, sería un camino por recorrer. – kurast

Respuesta

9

Puede intentar crear un materialized view de algún subconjunto de las tablas sobre el enlace de la base de datos y luego realizar una consulta a partir de ellas.

2

Archive los datos que ya no son actuales. (O si eso no es aceptable, datos que exceden algún umbral de antigüedad adecuado a sus requisitos).

4

Deberá mirar los planos. Es posible que pueda cambiar el orden de la unión, agregar criterios o proporcionar sugerencias para hacerlo más rápido, pero sin el plan de explicación, no sabe por qué es lento, por lo que ni siquiera sabe SI puede hacerlo Más rápido.

2

¿Podría hacer un volcado diario de los registros que necesita en su propia base de datos/tablas?

6

creo que está atrapado entre la espada y la pared aquí, pero en el pasado la siguiente ha trabajado para mí:

Puede tirar de una instantánea de los datos actuales en los intervalos especificados, cada hora o todas las noches o lo que sea que funcione, y agregue sus índices a sus propias tablas según sea necesario. Si necesita acceso en tiempo real a los datos, puede intentar extraer todos los registros actuales en una tabla temporal e indexarlos según sea necesario.

La carga adicional de copiar de una base de datos a la suya puede empequeñecer el beneficio real, pero vale la pena intentarlo.

1

¿Qué tal crear una vista materializada/indexada? Eso podría ayudar un poco.

+1

Una vista indizada es la terminología de SQL Server: en Oracle se denominan vistas materializadas. –

Cuestiones relacionadas