亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3362 | 回復(fù): 4
打印 上一主題 下一主題

如何取得一串連續(xù)的數(shù)字 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-11-24 11:13 |只看該作者 |倒序?yàn)g覽
大家好:

    我有一個(gè)需求,想請(qǐng)教一下要如何比較快效率地實(shí)現(xiàn)

   ex:
   總位數(shù):16 (最后編碼的總位數(shù))
   固定編號(hào)位數(shù):8
    固定編號(hào):YC052008
    流水號(hào)位數(shù):8

    流水碼起始號(hào):user_keyin1
    流水碼終止號(hào):user_keyin2

    若用戶key in的范圍是 0-5,則產(chǎn)生YC05200800000000/YC05200800000001......./YC05200800000005
    其中,每產(chǎn)生一個(gè)號(hào)碼,發(fā)檢查后臺(tái)table,此號(hào)碼是否已經(jīng)生成過(guò)了,若生成過(guò)了,則會(huì)記錄錯(cuò)誤log檔

   目前我使用的方式,效率有點(diǎn)差,即:
  用循環(huán)的方式,每產(chǎn)生一個(gè)號(hào)碼,就啟用一個(gè)select語(yǔ)句,ex:
    while
        產(chǎn)生號(hào)碼
     select 檢查號(hào)碼是否生成
   end while
     但這樣的效果感覺(jué)太差了,因?yàn)槿粞h(huán)100萬(wàn)次,則要啟用100萬(wàn)次的select,running time太長(zhǎng)了,算是比較糟糕了
   
   我目前有想到用rownum的方式,但是弱點(diǎn)是,他會(huì)基于select表的行數(shù),ex:
    SELECT '固定編號(hào)'||ROWNUM as mycol FROM table1
      WHERE ROWNUM BETWEEN user_keyin1 AND user_keyin2   
           ---目前為止生成起始編碼~截止編碼--ROWNUM處還要加一點(diǎn)format,因?yàn)榫幋a的長(zhǎng)度是確定的
        AND mycol NOT IN (SELECT .....FROM 后臺(tái)表)
           --- NOT IN效率差一點(diǎn),可能會(huì)改用not exist

     但是這里有一個(gè)致命的問(wèn)題,即table1的行數(shù)要足夠大才可以,因?yàn)閡serkeyin的數(shù)字,目前可以達(dá)到16位,
   所以我想請(qǐng)問(wèn)一下,比較好的解決方法是怎樣?

  謝謝各位

論壇徽章:
1
丑牛
日期:2014-08-07 17:07:05
2 [報(bào)告]
發(fā)表于 2008-11-24 11:33 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-11-24 12:31 |只看該作者
begin
  for no in 1 .. 10000 loop
     select 'x' from 后臺(tái)表
     where ??? = no;
    if 有數(shù)據(jù) then
       ...
       -- 這個(gè)no不能用
   else
       -- 按你要的格式輸出no
   end if;
  end loop;
end;

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-11-24 13:24 |只看該作者
To Doni
     我原來(lái)的實(shí)現(xiàn)方法和您的類似,但是由于每產(chǎn)生一個(gè)no后,去做一次select,目前效果不太好

To ILOVEMK
     Sequence有想過(guò),但是sequence的取得,好象都是用nextval,一條條去取得的,我不太熟他,可能說(shuō)得不對(duì)

目前我在try select語(yǔ)句的connect by ,看是不是ok,ex
     select id+1000 from (select level as id from dual connect by level<=1000);
     看是不是work

不過(guò)好象不是標(biāo)準(zhǔn)的ANSI...哎.....,回去再try

各位還有什么好的idea,謝了

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-11-24 16:51 |只看該作者
目前測(cè)試結(jié)果:
數(shù)據(jù)量10萬(wàn)筆
step 1:用select connect by 的語(yǔ)句產(chǎn)生號(hào)碼,并丟入temp table  <1秒(10萬(wàn)筆)
step 2:用后臺(tái)表1丟入temp table1   <1秒(1329筆)
step 3:從temp table中去掉temp table1的結(jié)果 19秒
step 4:后臺(tái)表2/后臺(tái)表3 join的結(jié)果放至temp table3 <1秒(4000多筆中選中30筆左右)
step 5:從temp table中去掉temp table3的結(jié)果 36秒
step 6:把temp table的結(jié)果插入正式表 2秒(10萬(wàn)筆)

基本上效率還行,不過(guò)好象step 5,比較奇怪
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP