你可以研究一下,当前的瓶颈是什么,不过实在的说,一亿多数据,跑半天是正常的。
不过这个要看你用的什么方法插入的数据。
应该不是insert into values 把?
全部资源肯定不可能的。因为oracle运行的时候不仅仅使用cpu,还有内存和硬盘。一般来说IO出现瓶颈的可能比较大。
另外可以用nologging+append的方式来加速插入。
你的这个表有主键没?
如果有主键,假设你的这个表的主键是sid
那么可以使用
select count(sid) from tablename
来查询会比你用count() 要快的多。使用主键字段会用到主键索引,会比你去扫描整个表要快的多。
oracle 里面统计某个表的数据行的数量只有使用count函数来求。如果数据量非常大你应该考虑把你的历史数据给清理掉或者使用分区表 。
可用两种方法,一种是在oracle的系统表中统计,另一种需要写存储过程统计,方法分别如下。
1、系统表中统计:
1SELECT sum(num_rows) FROM user_tables;结果:
2、存储过程统计,代码如下:
declarev_tName varchar(50);v_sqlanalyze varchar(500);v_num number;v_sql varchar(500);cursor c1 isselect table_name from user_tables;beginopen c1;loopfetch c1 into v_tName;if c1%found then v_sqlanalyze :='analyze table '||v_tName||' estimate statistics';execute immediate v_sqlanalyze;v_sql := 'select NUM_ROWS from user_tables where table_name =upper('''||v_tName||''')'; execute immediate v_sql into v_num;dbms_outputput_line('表名: '||v_tName||' 行数: '||v_num);elseexit;end if;end loop;end;
统计结果:
select 字段1,字段2 from 表 where 条件 ,
优化SQL语句,
注意点,
1。需要的字段最好都列出来,不要用星号。
2。条件部分要优化一下,数据少的时候,优不优化不明显,数据多了挺重要的。
3。条件字段最好用到索引,不用索引的话,全表搜索。
您好,Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
以上就是关于多谢关注问题:我用oracle插入一亿二千万条数据到一个表中,7个多小时过去了还没有完成。全部的内容,包括:多谢关注问题:我用oracle插入一亿二千万条数据到一个表中,7个多小时过去了还没有完成。、在oracle生产库中,我的一个表的数据有10亿行记录,怎么快速计算有多少行,不要告诉我用count(*)之类的答案、如何在oracle数据库中查询记录在100万条以等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)