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,之后提供下载或者邮件出去即可
如果是统计,应该将数据在数据库统计好在查询