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

    Feedback

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

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

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


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

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

    Copyright © flustar

    主站蜘蛛池模板: 亚洲av伊人久久综合密臀性色 | 日韩免费一区二区三区在线 | 国产一区二区三区免费在线观看| 青青草a免费线观a| 韩国二级毛片免费播放| 亚洲精品WWW久久久久久| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 老司机亚洲精品影院无码| 亚洲精品伊人久久久久| 五级黄18以上免费看| 中字幕视频在线永久在线观看免费 | 亚洲AV无码一区二区一二区| 东北美女野外bbwbbw免费| 黄色永久免费网站| 亚洲日韩乱码中文无码蜜桃臀网站 | 真人做A免费观看| 久久亚洲国产成人影院网站 | 亚洲.国产.欧美一区二区三区| 一级黄色片免费观看| 国产麻豆视频免费观看| 亚洲啪啪AV无码片| 国产精品亚洲一区二区三区在线观看 | 成人午夜亚洲精品无码网站| 亚洲av无码专区在线观看亚| 99在线观看精品免费99| 国产亚洲精品不卡在线| 国产亚洲午夜精品| 国产午夜影视大全免费观看 | 亚洲成av人在线视| 久久成人免费电影| 亚洲av福利无码无一区二区| 国产免费一区二区三区免费视频| 免费日本黄色网址| 色天使亚洲综合一区二区| 在线观看人成视频免费| 亚洲精品国产精品| 全部免费毛片免费播放| 免费在线观看一区| 亚洲永久精品ww47| 久久aa毛片免费播放嗯啊| 亚洲高清不卡视频|