当前位置: 代码迷 >> C# >> ORACLE 查詢大數據量慢問題解决思路
  详细解决方案

ORACLE 查詢大數據量慢問題解决思路

热度:372   发布时间:2016-05-05 02:57:28.0
ORACLE 查詢大數據量慢問題

create table SQLTEST
(  ROWNUMBER number(10) not null,
   Contents NVARCHAR2(255),
   constraint PK_SQLTEST primary key (ROWNUMBER)
)
/

insert into SQLTEST(ROWNUMBER,Contents) VALUES(1,'UPDATE A SET NAME=1234 WHERE ID=1');
insert into SQLTEST(ROWNUMBER,Contents) VALUES(2,'UPDATE A SET NAME=1234 WHERE ID=1');
insert into SQLTEST(ROWNUMBER,Contents) VALUES(3,'UPDATE A SET NAME=1234 WHERE ID=1');
insert into SQLTEST(ROWNUMBER,Contents) VALUES(4,'UPDATE A SET NAME=1234 WHERE ID=1');
1.創建表 "SQLTEST"
2.插入以上數據(注:只是發帖使用這樣的數據,實際環境SQL比這稍微複雜,字符也比較多)
3.導出SQL或者查詢出來執行。

問題:
1.SQLTEST數據量比較大,大概300W條(總計有2G左右 導出DMP時發現的)
2.PLSQL 無法導出,8G內存,會出現內存溢出
3.查詢速度非常慢,我分頁一次3W條(分頁10W查詢速度更慢至少需要40分以上)大概查詢一次需要8-10分鐘 查詢SQL(SELECT Contents FROM SQLTEST WHERE ROWNUMBER BETWEEN 1 AND 30000)

請問我有什麼做錯了嗎?為什麼這麼慢,只是全部查詢就耗時5 6個小時 以上,求解決方案和指點錯誤


------解决思路----------------------
查询应该不慢,慢在3W数据加载到内存,加载到页面的时间。

换个思路试试,什么情况下用户会需要 “看到” 3W 条数据? 

如果是做报表,可以在后台生成好 EXCEL,之后提供下载或者邮件出去即可
如果是统计,应该将数据在数据库统计好在查询
  相关解决方案