从Oracle的一个非常大的表中选择N任意行



我有一个非常大的表MY_TABLE(1亿行(。我希望从该表中选择5个样本。

我能想到的是获得5个任意主要键,如下所示,这是通过解释计划显示的快速完整扫描:

select MY_PRIMARY_KEY_COLUMN from (select MY_PRIMARY_KEY_COLUMN, rownum as rn from MY_TABLE) where rn <=5 

,然后获取与这些主要键相对应的记录。

但是这仍然非常非常慢。

可以更有效地完成吗?

看起来,我感到困惑。正如评论者所注意到的那样,查询

应该没有问题
select * from MY_TABLE where rownum <=5

但是我以某种方式开始看

select MY_PRIMARY_KEY_COLUMN from (select MY_PRIMARY_KEY_COLUMN, rownum as rn from MY_TABLE) where rn <=5

确实运行非常慢。

很抱歉浪费了每个人的时间,select * from MY_TABLE where rownum <=5效果很好。

最新更新