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) 不知道 对楼主有么有用 谢谢楼上的,分区表可以自动创建么?比如新的一个月来了之后,用代码
相关问答:
我在开发的这个应用并发性比较高,oracle更新数据时候如何处理并发处理呢?各位大侠发表好的观点啊,在线等待! oracle数据更新时,会自动默认行锁定,楼主不要操心,Oracle对并行处理已经很成熟了 引用 oracle ......
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后 #topas查看总是有一块磁盘%BUSY为90%以上, 数据库版本:oracle 9.2.0.7 数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04 #lslv -l lv04
......
假设table01 中有 以下资料 emp_no emp_name ------- ------------ 0001 TOM 0002 JOHN 0003 MARY 常用电话 而我们要得到以下的OUTPUT (或是各种其他的output) 0001,TOM 0002,JOHN
......
做玩data guard 后 在Primary服务器 执行 SQL>SELECT SEQUENCE#,APPLIED from V$ARCHIVED_LOG ORDER BY SEQUENCE#; SEQUENCE# APP ---------- --- 13 NO 13 YES ......
Oracle中用户名是什么? 描述清楚一点! ORACLE数据库中有很多内置的用户名,sys就不说了,还有scott密码是tiger.除了sys,其他用户都是所定的,解除锁定后才能使用。在本机登陆数据库时,sys的密码可以随意输入。
......