您好我正在尝试从oracle数据库中选择随机记录。我尝试使用以下查询:
select field1
from (select field1 from table1 where field2='SAMPLE_VALUE' order by dbms_random.value)
where rownum <2;
这很好用,除了它非常慢和昂贵。
我们有更快的方法来实现这个目标吗?
答案 0 :(得分:2)
您可以尝试SAMPLE子句:
select field1
from table1 sample (1)
where field2='SAMPLE_VALUE' and
rownum <=1
然而:
答案 1 :(得分:0)
如果记录有一些唯一的数字列,我会尝试将其与随机生成的值进行比较。像SELECT ... FROM ... WHERE id = RANDOM_VALUE
这样的东西。但是,可能需要进行一些计算才能使此唯一列和随机值具有相同的范围。
答案 2 :(得分:0)
您需要检查执行计划
它可能会对表格进行full access
,因此如果您可以在field2
上添加索引,则优化程序可能会根据您的index range scan
执行where clause
。
(我真的不知道field2什么,所以仔细检查)