我正在使用我们的Web应用程序处理一些Oracle性能问题。有一件事我注意到,似乎混淆了任何类型的测试,但返回大量结果的简单查询仍然非常缓慢。一个例子是:Oracle - 为什么SELECT * FROM Foo;太慢了?
select * from TPM_PROJECTWORKGROUPS;
当我运行它,我得到:
5825 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 59s]
[Executed: 9/22/2011 1:52:38 PM] [Execution: 203ms]
如果我理解这个正确的,这意味着实际查询了203ms运行,但它花了59秒该数据被退回到客户端,这是“取”在这种情况下意味着什么?
我无法直接连接到数据库机器并在本地运行查询,但假设罪魁祸首是实际的网络带宽本身是否安全?这是有道理的,因为我在西雅图,服务器在纽约,但对于5800行仍然是一分钟似乎是非常缓慢的通过。
是否有任何快速建议:a)确认网络带宽确实是问题; b)任何“疑难杂症”或检查为什么通过线缆串行化数据太慢的原因?谢谢!
基于评论一些更新:
SELECT COUNT(*)FROM(SELECT * FROM TPM_PROJECTWORKGROUPS)吨;
结果:
1 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 0ms]
[Executed: 9/22/2011 2:16:08 PM] [Execution: 219ms]
如果我尝试选择只有一个列:
SELECT专案编号FROM TPM_PROJECTWORKGROUPS;
结果:选择
5825结果[取的元数据:0毫秒] [获取数据:1米0]
[执行时:2011/9/22二点17分20秒PM] [执行:203ms]
表架构:
专案编号(NUMBER) WORKGROUPID(NUMBER)
你确定TPM_PROJECTWORKGROUPS是一张表而不是视图吗? – MusiGenesis
一排的大小是多少?任何CLOB/BLOB? – muratgu
尝试'SELECT COUNT(*)FROM(select * from TPM_PROJECTWORKGROUPS)t;'看看是否有很大的差异 –