【发布时间】:2011-05-13 12:58:46
【问题描述】:
假设:
- 我有许多由事实和外键(“维度”和“键值”类型)组成的表。例如,遇到:
ID - 主键
维度
- LOCATION_ID
- PATIENT_ID
键值对
- TYPE_ID
- STATUS_ID
- PATIENT_CLASS_ID
- DISPOSITION_ID
- ...
事实
- 入学日期
- DISCHARGE_DATE
-
...
- 我没有创建数据仓库的选项
- 我想简化报告的数据结构
我的方法是创建多个伪维度视图(基于 DEPARTMENT 和 LOCATION 表的“D_LOCATION”)和伪事实视图(基于 ENCOUNTER 表的“F_ENCOUNTER”)。在伪事实视图中,我会将键值表(例如 STATUS、PATIENT_CLASS)加入事实表以包含名称字段(例如 STATUS.NAME、PATIENT_CLASS.NAME)。
问题:
- 如果查询从 F_ENCOUNTER 中选择所有字段的子集(即不是所有 key-value.name 字段),Oracle 10g 优化器是否足够聪明,可以排除一些键值表连接(即未包含在查询中的)?
- 我可以做些什么来优化这个架构(索引除外)
- 还有其他方法吗?
** 编辑 ** 目标(按重要性排序):
- 降低查询复杂度;提高查询一致性;减少报告开发时间
- 优化查询处理
- 尽量减少管理员负担
- 减少存储空间
【问题讨论】:
标签: oracle optimization view oracle10g