对于count来说统计数据话,没有什么好的方法。具体还要看应用
统计是实时还是非实时的,从处理方法来说是不一样的。
如果是实时的话消耗硬件资源是非常大的,如果是非实时统计的
存入临时表去取数据这样既能调查询效率,对机器资源的消耗也小,
只不过定时去update就可以了。
统计是实时还是非实时的,从处理方法来说是不一样的。
如果是实时的话消耗硬件资源是非常大的,如果是非实时统计的
存入临时表去取数据这样既能调查询效率,对机器资源的消耗也小,
只不过定时去update就可以了。
解决方案 »
- oracle 9i 可以安装在windows server 2003 上?
- 数据泵问题
- 奇怪的问题dblink报0RA-12154:TNS :无法处理服务名错误,但TNSNAMES.ORA文件没有配置错,用相同的用户名,密码登陆数据库都没有问题
- 多表关联的Update更新很慢,怎么办?
- WIN2000+oracle群集,创建表空间的问题?
- 客户端访问服务器的问题,别嫌菜,因为我就是菜
- 如何获得trigger的脚本?如何获得表的脚本,如何获得包的脚本?
- 高手很进,为何这段代码连接不上Oracle?
- 请问O有没有橡sqlserver那样的数据浏览和xql执行界面?
- 数据库dblink
- 请教如何生成这样一张视图
- 急急急!求大神!排序 同organ_id、同user_id 的数据 只取一条
不会太高。楼主可以模拟一下两千万条数据下执行效率。
count(*)或者count(createman)这样应该都比
count(createTime)好
--------------------------------------------------------------------------------
Plan hash value: 2982274804
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 10724 (2)| 00:02:09 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | INDEX FAST FULL SCAN| SYS_C0011627 | 20M| 10724 (2)| 00:02:09 |
------------------------------------------------------------------------------SQL> explain plan for select count(1) from customer;ExplainedSQL> select * from table(dbms_display);select * from table(dbms_display)ORA-00904: "DBMS_DISPLAY": 标识符无效SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2982274804
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 10724 (2)| 00:02:09 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | INDEX FAST FULL SCAN| SYS_C0011627 | 20M| 10724 (2)| 00:02:09 |
------------------------------------------------------------------------------9 rows selectedSQL> explain plan for select count(1) from customer;ExplainedSQL> select * from table(dbms_display);select * from table(dbms_display)ORA-00904: "DBMS_DISPLAY": 标识符无效SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2982274804
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 10724 (2)| 00:02:09 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | INDEX FAST FULL SCAN| SYS_C0011627 | 20M| 10724 (2)| 00:02:09 |
------------------------------------------------------------------------------9 rows selected
为什么count(*) 、ount(createman)和count(createTime)的执行计划是一样的
要提高count速度,似乎没什么好办法,
可以尝试开并行看看,
select /*+parallel(customer 4)*/ count(*) from customer不行还是很慢啊
还是count(createman)快,因为他只要找index,不用访问表既可以完成工作
还是count(createman)快,因为他只要找index,不用访问表既可以完成工作
count 会让索引走IFFS 一样的,甚至更差