今天做一個專案,需要隨機抽取用戶資料,就使用了dbms_random.value() ,但是抽取的速度令人發指,請問有辦法解決下嗎?
使用的是無引數的方法,再問一下,用這種方法一次抽取10條,和查詢10次SQL取十條資料有區別嗎?
uj5u.com熱心網友回復:
就使用了dbms_random.value() ,但是抽取的速度令人發指說說你的程序,這個不應該這 么慢;
uj5u.com熱心網友回復:
dbms_random.value()只是單純的生成一個亂數,應該不會慢,分析一下你其他代碼的邏輯uj5u.com熱心網友回復:
select * from (select Casebh, Casedjr,Casedjrxm,Casedjrbm, Casedjrbmmc, Casedjrdw,Casedjrdwmc,caseldhm, Caseldrdh, casedjrq, Caseywly,caseywlx,
nvl(CASEPFCS, 0) casepfcs,casesfmyd casemydname,casemyd,casedjclfs, caseywlb,Caseslzx,Casethkssj,Casethjssj,casesfwx
from YWCL_CASE a
where 1 = 1
and nvl(CASESCBZ, 0) <> '1'
and casezt <> '0206'
and nvl(casepfcqbz, '0') = '0'
and casezt <> '0215'
and exists (select zljkywbh
from ywgl_zljk
where zljkjkjb = '1'
and zljkywbh = a.casebh)
and not exists
(select zljkywbh
from ywgl_zljk
where zljkjkjb = '2'
and zljkywbh = a.casebh)
and nvl(casesfypf, '0') = '1'
AND CASEDJRQ >= to_date('2017-03-01 00:00:00', 'yyyy-mm-dd HH24:mi:ss')
AND CASEDJRQ <= to_date('2017-04-28 23:59:59', 'yyyy-mm-dd HH24:mi:ss')
and exists
(select 1
from xtgl_unit u
where u.unitcode = casedjrdw
start with u.unitcode = '244000000'
connect by prior u.unitcode = u.unitparentcode)
order by dbms_random.value()
)
where rownum <='1'
不好意思沒放代碼 這是代碼,資料量在20萬左右吧
uj5u.com熱心網友回復:
速度很慢嗎 這個函式應該不會啊uj5u.com熱心網友回復:
慢與dbms_random.value()沒啥關系,主要是你的sql執行效率。看看他的執行計劃。
性能問題應該主要集中在 exists,和not exists
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96334.html
標籤:開發
上一篇:求各位大神指點SQL應該如何來寫
