<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

        在做音視頻網(wǎng)站審核的時(shí)候,發(fā)現(xiàn)分頁(yè)出現(xiàn)了重復(fù)記錄。原以為是自己程序出了問(wèn)題,可仔細(xì)檢查了程序之后,并沒(méi)有發(fā)現(xiàn)有什么不對(duì)的地方,于是上網(wǎng)查了一下,原來(lái)是oracle
    分頁(yè)機(jī)制的問(wèn)題,在oracle中,分頁(yè)是通過(guò)rownum函數(shù)來(lái)實(shí)現(xiàn)的,
    rownum順序號(hào)的生成是排序后生成的,例如下面這條sql:
    select * from user where rownum <= 20 and rownum > 10 order by userName
    按照我們正常的理解,這條sql查詢的是user表中按照userName升序后取其10~20條記錄,
    其實(shí)不然,oracle是排序后才生成rownum,理想情況下如userName在user表的值是唯一
    的或者userName在數(shù)據(jù)庫(kù)中被建了唯一索引,結(jié)果是正確的,但是如果userName的值存在
    大量重復(fù)記錄或者為空,就會(huì)出現(xiàn)問(wèn)題重復(fù)記錄的情況。正確的sql應(yīng)該這樣寫:
    select * from (select * from (select * from user order by userName)
    where rownum <= 20) where rownum >=10
    但是這并不能從根本上解決問(wèn)題,為了避免這種情況,建議慎用oracle的排序功能,
    如果需要使用排序,一定要選擇那些建有唯一索引的字段。當(dāng)然有時(shí)候我們可能需要對(duì)
    那些不是唯一索引的字段進(jìn)行排序,這些字段的值可能大量重復(fù)也可能為空,怎么辦,
    這時(shí)候可以采用聯(lián)合字段排序,也就是排序字段中包含一個(gè)主鍵或不會(huì)重復(fù)的字段。

    Feedback

    # re: 使用hibernate對(duì)oracle數(shù)據(jù)庫(kù)中數(shù)據(jù)分頁(yè)出現(xiàn)重復(fù)記錄  回復(fù)  更多評(píng)論   

    2013-07-15 16:56 by 游客
    學(xué)習(xí)了!

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    posts - 146, comments - 143, trackbacks - 0, articles - 0

    Copyright © flustar

    主站蜘蛛池模板: 2021在线永久免费视频| 女人18毛片水真多免费看| 久久亚洲中文字幕无码| 99久久亚洲综合精品成人网| 免费a级黄色毛片| 91免费国产在线观看| 男人都懂www深夜免费网站| 四虎影视永久在线精品免费| 亚洲中文字幕一二三四区| 久久精品国产亚洲av麻豆小说| 自拍偷自拍亚洲精品被多人伦好爽| 日韩免费无码一区二区视频| 日韩不卡免费视频| 84pao强力永久免费高清| 在线观看片免费人成视频无码| 日韩一区二区三区免费播放| 国产综合成人亚洲区| 亚洲精品永久在线观看| 亚洲 暴爽 AV人人爽日日碰| 人妻无码一区二区三区免费 | 8x8×在线永久免费视频| 97人妻精品全国免费视频| 中文字幕手机在线免费看电影| 久久噜噜噜久久亚洲va久| 亚洲日韩精品一区二区三区无码 | 亚洲妇女熟BBW| 亚洲国产精品久久久久秋霞影院 | 在线观看免费无码视频| www.av在线免费观看| 国产黄色免费观看| 国产高清视频免费在线观看| 99久久成人国产精品免费| 两个人看的www免费高清| 成人免费乱码大片A毛片 | 亚洲AV乱码一区二区三区林ゆな| 亚洲精品乱码久久久久久久久久久久 | 亚洲精品无码不卡在线播HE| 亚洲精品国产品国语在线| 亚洲av午夜福利精品一区人妖| 成年女人午夜毛片免费视频 | 久久久久亚洲AV无码专区桃色|