Oracle10g Oracle按查询排序非常慢

Oracle10g Oracle按查询排序非常慢,oracle10g,sql-order-by,Oracle10g,Sql Order By,我在桌上点菜时遇到了一个问题 我的select查询工作正常,但当我执行order by(即使是在主键上)时,它只会不停地运行,没有结果。最后,我需要结束会话。这个表有20K条记录。 对此有什么建议吗? 查询如下: SELECT * FROM Users ORDER BY ID; 我对查询计划一无所知,因为我是oracle的新手 对于无序查询,SQLDeveloper是在检索和显示20K行,还是仅显示前50行?你的比较可能不公平 这20K行的大小是多少:从user_段中选择字节/1024/102

我在桌上点菜时遇到了一个问题

我的select查询工作正常,但当我执行order by(即使是在主键上)时,它只会不停地运行,没有结果。最后,我需要结束会话。这个表有20K条记录。 对此有什么建议吗? 查询如下:

SELECT * FROM Users ORDER BY ID;
我对查询计划一无所知,因为我是oracle的新手

  • 对于无序查询,SQLDeveloper是在检索和显示20K行,还是仅显示前50行?你的比较可能不公平
  • 这20K行的大小是多少:
    从user_段中选择字节/1024/1024 MB,其中segment_name='USERS'我见过很多情况,几兆字节的数据会占用很多千兆字节的存储空间。可能之前数据非常大,有人刚刚删除了它(这并没有删除空间)。或者可能有人一次插入一行,并附加一个提示,每一行占用一个完整的块
  • 您的查询可能正在等待更多的临时表空间进行排序,请查看DBA_RESUMABLE

  • 首先,您可以发布查询和查询计划吗?查询要运行多长时间才能终止?查询返回多少行?@Justin Cave:SQL Developer即使在20分钟后也会显示加载图标。所以我需要选择leftOK来杀人。您是否正在编辑问题以添加查询和查询计划?返回的行数是多少?Select查询返回一些MSECG生成查询计划中的20K条记录。文档中介绍了:最简单的选项是为Select*按ID排序的用户执行
    解释计划
    然后对文档中“显示计划表输出”部分中的
    计划表运行查询。