由于表中的行数太大,我从“ORDER BY dbms_random.value”结构切换为获取1000个随机行到SAMPLE子句 . 只需不到一秒钟而不是3分钟即可完成 . 但在某些表格上我得到了这个错误
ORA-01446:无法从DISTINCT,GROUP BY等视图中选择ROWID
我的查询如下所示:
SELECT t1.columnA FROM
(SELECT columnA FROM table1 sample(1) where rownum <= 1000) t1
JOIN table2 t2
ON (t1.columnA = t2.columnA)
WHERE t2.columnB IS NOT NULL
它在某些表上工作正常,但在其他表上失败 . 我放弃谷歌搜索,请你在我的情况下建议任何解决方法 .
1 回答
正如我所期望的那样,SAMPLE子句的工作速度比所有其他解决方案更快(Here you can see some of them)
因为我一般都是Oracle DB的新手,而Oracle SQL Developer特别是我错误地称为查看“表” . 在我发现解决方案清楚之后 .
解决方案:我必须查看构成视图的SQL查询,并用该查询替换视图名称 . 例如,我的table1实际上是一个视图,其名称我替换为构成该视图的SELECT查询:
之后我可以使用表格并将SAMPLE应用于它们!谢谢大家,很棒的网站! =)PS:对不起我的英文和丑陋的代码facepalm.jpg