當分區鍵與分析函數 PARTITION BY 欄位一致時,各分區資料獨立運算、互不干擾,可大幅提升分析函數執行效率。
t_partition_hash:8 個 Hash 分區(依 object_type),各置於 USERS 表空間t_big_hash:同結構非分區表從 DBA_OBJECTS 重複插入,總筆數 1,610,880 筆。
INSERT INTO t_rank
SELECT object_id,
RANK() OVER (PARTITION BY object_type ORDER BY object_id) r_object_id,
RANK() OVER (PARTITION BY object_type ORDER BY subobject_name) r_subobject_name,
RANK() OVER (PARTITION BY object_type ORDER BY created) r_created,
RANK() OVER (PARTITION BY object_type ORDER BY last_ddl_time) r_last_ddl_time,
RANK() OVER (PARTITION BY object_type ORDER BY status) r_object_type
FROM t_partition_hash; -- 或 t_big_hash
| 表類型 | 執行時間 (秒) |
|---|---|
| Hash 分區表 | 33.4 ~ 46.2 |
| 非分區表 | 75.9 ~ 142.0 |
分區表效能約為非分區表的 2~3 倍。預期資料量增長時差距更明顯。
針對大量資料的分析函數查詢,將分區鍵與 PARTITION BY 欄位對齊的 Hash 分區策略,能有效平行化運算、降低跨分區干擾,是提升效能的關鍵手段。