Verificar las claves de partición y el uso de partition-wise join
OracleParticionamientoComando
-- 1) Do both tables have the same partitioning type, key and count?
SELECT p.owner, p.table_name, p.partitioning_type, k.column_name,
p.partition_count, p.subpartitioning_type
FROM dba_part_tables p
JOIN dba_part_key_columns k
ON k.owner = p.owner AND k.name = p.table_name AND k.object_type = 'TABLE'
WHERE p.owner = 'CUSTOMER_APP'
AND p.table_name IN ('CUSTOMER_H', 'ORDERS_H');
-- 2) Explain the join and inspect the plan shape:
EXPLAIN PLAN FOR
SELECT /*+ PARALLEL(4) */ m.city, SUM(s.amount)
FROM customer_app.customer_h m
JOIN customer_app.orders_h s ON s.customer_id = m.id
GROUP BY m.city;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(format => 'BASIC +PARALLEL +PARTITION'));
-- Full PWJ: HASH JOIN sits BELOW the PARTITION HASH ALL line (PX PARTITION HASH ALL in parallel)
-- Partial PWJ: PX SEND PARTITION (KEY) on one side only
-- No PWJ: PX SEND HASH / BROADCAST on both sidesQué hace
Dos tablas equiparticionadas por la clave de join pueden unirse par de particiones a par de particiones (full partition-wise join), lo que reduce mucho el tráfico de redistribución y la memoria en consultas paralelas. La forma del plan muestra si se usa PWJ.
Cuándo usarlo
Al diseñar grandes joins fact-to-fact o fact-to-dimension en un DWH, cuando las consultas paralelas muestran mucha redistribución PX (PX Deq Credit: send blkd), y al validar la estrategia de particionamiento.
Precaución
Licencia: opción Partitioning (EE con costo adicional); las consultas paralelas requieren Enterprise Edition. EXPLAIN PLAN es una estimación; use DISPLAY_CURSOR/SQL Monitor para el plan real. El PWJ completo necesita el mismo número de particiones (para hash se recomienda una potencia de dos) y tipos de datos de clave coincidentes. PWJ también puede aparecer en planes seriales, pero la ganancia real está en la ejecución paralela.