对于count来说统计数据话,没有什么好的方法。具体还要看应用
统计是实时还是非实时的,从处理方法来说是不一样的。
如果是实时的话消耗硬件资源是非常大的,如果是非实时统计的
存入临时表去取数据这样既能调查询效率,对机器资源的消耗也小,
只不过定时去update就可以了。
统计是实时还是非实时的,从处理方法来说是不一样的。
如果是实时的话消耗硬件资源是非常大的,如果是非实时统计的
存入临时表去取数据这样既能调查询效率,对机器资源的消耗也小,
只不过定时去update就可以了。
解决方案 »
- SQL问题, 求高人
- 查寻问题select...
- 请教大虾们!
- oracle中SID能改名吗???在线等?
- asp调用oralce数据库存储过程出错!!!大家来看看吧。
- select a.* from smtopm a INNER JOIN iir b on a.item_key!=b.itm_key上面这句话有什么好的方法使执行时间更短,还有为什么这句话会产生
- SQL2000的左外联怎么转为ORACLE817的左外联
- oracle数据导入问题!在线等,谢谢!
- 写一个作业,将一个数据库中几个用户的相关数据备份成DMP和SQL文件?
- Asp中对Oracle的Long类型字段的存取操作如何解决??急!!!请高手帮忙~~~~~~~~~~~~
- 请教如何生成这样一张视图
- 急急急!求大神!排序 同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 一样的,甚至更差