Oracle SQL-检查SQL数据大小
我们在距离我们千里之外的数据库上工作,我们想检查sql性能或传输是否有问题(我们不是数据库专家)。问题是-如何检查sql查询返回的数据的大小?可能吗?假设我们有这个查询:Oracle SQL-检查SQL数据大小,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我们在距离我们千里之外的数据库上工作,我们想检查sql性能或传输是否有问题(我们不是数据库专家)。问题是-如何检查sql查询返回的数据的大小?可能吗?假设我们有这个查询: SELECT a.col1, b.col2, c.col1 FROM a INNER JOIN b on b.a_id=a.id LEFT JOIN c on c.b_id=b.id WHERE a.somecol='data'; 需要将多少数据从dba传输到我们的应用程序?您可以获得接收到的所有数据的长度,甚至在执行查询之
SELECT a.col1, b.col2, c.col1
FROM a
INNER JOIN b on b.a_id=a.id
LEFT JOIN c on c.b_id=b.id
WHERE a.somecol='data';
需要将多少数据从dba传输到我们的应用程序?您可以获得接收到的所有数据的长度,甚至在执行查询之后(无预先假设) PS:您对表“
a
”和“c
”使用了相同的列名,即col1
,在向光标赋值时可能会出错。要解决此问题,将显式声明游标或使用REF游标。运行
显示
explain计划应该为您提供访问字节数的估计值
一种更简单、更准确的方法从SQL*Plus中提取数据,这应该会给出一个类似的数字
SET AUTOTRACE TRACEONLY
SELECT a.col1, b.col2, c.col1
FROM a
INNER JOIN b on b.a_id=a.id
LEFT JOIN c on c.b_id=b.id
WHERE a.somecol='data';
这应该会给出一些统计数据:
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
44 consistent gets
0 physical reads
0 redo size
24849 bytes sent via SQL*Net to client
408 bytes received via SQL*Net from client
6 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
66 rows processed
SET AUTOTRACE TRACEONLY
SELECT a.col1, b.col2, c.col1
FROM a
INNER JOIN b on b.a_id=a.id
LEFT JOIN c on c.b_id=b.id
WHERE a.somecol='data';
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
44 consistent gets
0 physical reads
0 redo size
24849 bytes sent via SQL*Net to client
408 bytes received via SQL*Net from client
6 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
66 rows processed