select * from table_name运行缓慢

时间:2017-12-12 13:23:31

标签: oracle12c

该表包含大约700 000个数据。有没有办法让查询运行得更快?

此表存储在服务器上。

我尝试通过获取特定列来运行查询。

1 个答案:

答案 0 :(得分:0)

如果select * from table_name异常缓慢,请检查以下事项:

  1. 网络速度。数据有多大,网络速度有多快?对于大型查询,您可能需要以字节而不是行来考虑数据。运行select bytes/1024/1024/1024 gb from dba_segments where segment_name = 'TABLE_NAME';并将其与您的网络速度进行比较。
  2. 行提取大小。如果应用程序或IDE一次只提取一行,则每行都会有很大的网络延迟开销。您可能需要增加该设置。
  3. 空细分。在一些奇怪的情况下,表格的细分受众群规模可能会增加而且不会缩小。例如,如果表曾经有数十亿行,并且已删除但未截断,则不会释放该空间。然后select * from table_name可能需要读取大量的空扩展区来获取真实数据。如果上述查询中的GB大小看起来太大,请运行alter table table_name move;以重建表并节省可能的空间。
  4. 递归查询。简单的查询几乎不会有错误的执行计划。递归查询的可能性,但速率可能有一个糟糕的执行计划。查询正在运行时,请查看select * from gv$sql where users_executing > 0;。可能存在一个非常慢且需要调整的数据字典查询。