無內選擇第一N個不同的行我有類似的結構如下:表1 - >表2的關係是1:米選擇在Oracle
我需要執行類似的查詢到下一個:
select Table1.id from Table1 left outer join Table2 on (Table1.id1 = Table2.id2) where Table2.name like '%a%' and rownum < 11
即我希望表1中的前10個符合表2中的條件。問題是我必須使用不同的,但在'rownum < 11'之後適用不同的子句,因此結果可能是5個記錄,即使它們的數量超過10
的明顯的解決方法是使用以下命令:
select id from (select Table1.id from Table1 left outer join Table2 on (Table1.id1 = Table2.id2) where Table2.name like '%a%') where rownum < 11
但我怕這樣的查詢的性能。如果Table1包含大約300k條記錄,並且Table2包含大約700k條記錄,那麼這樣的查詢是不是真的很慢?
是否有另一個查詢,但沒有內部選擇?不幸的是,我想避免使用內部選擇。
難道這樣的查詢真的很慢嗎?如果我知道真的很慢,我可以回答這個問題。 – 2011-01-11 11:42:16