oracle sql加排序变慢

select vrowid rid
from cux_mtl_system_items_v e
where e.ORGANIZATION_CODE = '100'
order by DESCRIPTION asc

        如上SQL,去掉ORDER BY 1秒内能查出来,如果加上ORDER BY 至少要20秒以上,这是为啥啊
        我是在PLSQL上面操作的
sql

4个回答

先用子查询减少数据量,然后再排序
SELECT ... FROM (
SELECT ... FROM ...
) ORDER BY ...

数据量很大的话,排序本来就慢,而且你的列是字符串,它的比较排序更费时间

建议你在cux_mtl_system_items_v 建议一个基于ORGANIZATION_CODE的索引,应该速度就非常快了

order by是用来排序的,如果刚开始的数据库没有按照你想要的顺序排列的话,用order by的时候就会使得数据库中的数据重新排列,这样执行起来就慢了,况且表中的记录也蛮多的,如果记录较少的话,就没什么快慢之分了
这样的话表添加主键和索引能够适当的加速

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问