oracle 查询优化的问题 - Oracle / 开发
一张销售事实表,一年1亿多条记录,有一个时间的维度表,里面有sale_date,month,week。现在想汇总每个月的销售额 sql: select sale_month, sum(sale_money) from sales,times where sales.sale_time = times.sale_time and sales.sale_time > to_date('20100101','yyyymmdd') group by sale_month sales表,times表上分别在sale_date 建立了一个索引。 现在的问题是,由于用到了times表中的sale_month分组,sales会被全表扫描,效率不高。请问应该如何优化? 谢谢
物化视图不考虑 ORACLE版本? sales.sale_time > to_date('20100101','yyyymmdd')数据占整个表比例如何? 如果是10g,ORACLE应该会选择最优CBO获取执行计划。 走索引不一定就一定快,若你想强制走索引,用hint试试,比较俩执行计划,哪个更优。 在sale_time上有分区表,每年一个分区。 我是说如果从数据库表设计角度看,还可以优化么?这么点的数据量很多数据仓库都会遇到吧,看来真要用物化视图+dimension ?引用 在sale_time上有分区表,每年一个分区。 我是说如果从数据库表设计角度看,还可以优化么?这么点的数据量很多数据仓库都会遇到吧,看来真要用物化视图+dimension ? 我们这边的处理方法 对于有些不是 非常大的表 一般采用 用月 进行分区 比如账单 之类的 对于很大的表(一天300W+ 数据 保存1年多的 ) 采用 月分区加日分区 (术语不清楚 subpartition) 不知道 对楼主有么有用 谢谢楼上的,分区表可以自动创建么?比如新的一个月来了之后,用代码
相关问答:
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后 #topas查看总是有一块磁盘%BUSY为90%以上, 数据库版本:oracle 9.2.0.7 数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04 #lslv -l lv04
......
做玩data guard 后 在Primary服务器 执行 SQL>SELECT SEQUENCE#,APPLIED from V$ARCHIVED_LOG ORDER BY SEQUENCE#; SEQUENCE# APP ---------- --- 13 NO 13 YES ......
oracle 通过BDlink 连接到一台MS SQL,查询都可以,但是不知道如何在oracle通过DBLink调用MS SQL的存储过程,求解~谢谢~ 引用 oracle 通过BDlink 连接到一台MS SQL,查询都可以,但是不知道如何在oracle通过DBLink调用M ......
Oracle中用户名是什么? 描述清楚一点! ORACLE数据库中有很多内置的用户名,sys就不说了,还有scott密码是tiger.除了sys,其他用户都是所定的,解除锁定后才能使用。在本机登陆数据库时,sys的密码可以随意输入。
......
通过NAME字段条件查询一个数据表,假设我有100个姓名,有以下两个方法, 方法1: 把100个Name 组成一个SQL语句,比如 Select * from tmp_table where Name='张三' or Name ='李四' Or ...Or Name='第一百个姓名' ......