rownum淺談(一)

只要做web開發(fā)抹凳,幾乎沒有不需要分頁查詢的井辜,在oracle中修壕,rownum就是用來進(jìn)行處理分頁的钉凌。

rownum是oracle對結(jié)果集返回的一個偽列,也就是說是先查詢完結(jié)果之后再加上的一個虛列帐偎,相當(dāng)于對符合條件的結(jié)果的一個序列號逐纬。如果有結(jié)果的話,rownum偽列產(chǎn)生的序號是按照數(shù)據(jù)被查詢出來的順序添加上去的削樊, rownum總是從1開始豁生,依次加1,先看個例子漫贞。

select rownum,u.* from t_user u

圖1

可以看到甸箱,rownum依次顯示了。我們需要查找前10條數(shù)據(jù)
select rownum,u.* from t_user u where rownum <= 10

圖2

數(shù)據(jù)正常查找出來迅脐,沒有問題芍殖。如果我們查詢結(jié)果中有排序呢,看看結(jié)果如何
select rownum,u.* from t_user u where rownum <= 10 order by u.c_id desc谴蔑;

select rownum,u.* from t_user u order by u.c_id desc豌骏;

第一條語句執(zhí)行結(jié)果
第二條語句執(zhí)行結(jié)果

可以看到數(shù)據(jù)沒有問題龟梦,換成下面的語句
select rownum,u.* from t_user u where rownum <= 10 order by u.c_createdate desc;

select rownum,u.* from t_user u order by u.c_createdate desc肯适;

第一條語句執(zhí)行結(jié)果
第二條語句執(zhí)行結(jié)果

可以看到变秦,按照創(chuàng)建時間排序查詢前10條有問題了成榜,但是看第二條執(zhí)行結(jié)果框舔,創(chuàng)建時間最近的應(yīng)該是chenz.ccsd而不是第一條中的43573830。為什么會這樣呢赎婚?

這是因?yàn)镺RACLE內(nèi)部的查詢優(yōu)化器和索引搞的鬼刘绣。

當(dāng)一條語句交給查詢優(yōu)化器處理時,會有兩種情況:

一種如果排序列上有索引的話挣输,則借助索引去查詢數(shù)據(jù)纬凤,這樣讀取出來的數(shù)據(jù)是有序的,然后為排序后的數(shù)據(jù)從第一行到最后一行賦予rownum值撩嚼;

另一種排序列上沒有沒有索引的話停士,則會先進(jìn)行全表掃描依次讀取數(shù)據(jù),然后為數(shù)據(jù)賦予rownum值完丽,再進(jìn)行排序恋技,此時所選取的數(shù)據(jù)就不是進(jìn)行排序的了。

上面語句中c_id是有索引的逻族,而c_createdate是沒有建立索引的蜻底。
由于排序列上不一定要有索引,所以在使用rownum分頁時聘鳞,需要多加一層查詢薄辅,以保證rownum的連續(xù)性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抠璃,一起剝皮案震驚了整個濱河市站楚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搏嗡,老刑警劉巖窿春,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異彻况,居然都是意外死亡谁尸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門纽甘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來良蛮,“玉大人,你說我怎么就攤上這事悍赢【鐾” “怎么了货徙?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長皮胡。 經(jīng)常有香客問我痴颊,道長,這世上最難降的妖魔是什么屡贺? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任蠢棱,我火速辦了婚禮,結(jié)果婚禮上甩栈,老公的妹妹穿的比我還像新娘泻仙。我一直安慰自己,他們只是感情好量没,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布玉转。 她就那樣靜靜地躺著,像睡著了一般殴蹄。 火紅的嫁衣襯著肌膚如雪究抓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天袭灯,我揣著相機(jī)與錄音刺下,去河邊找鬼。 笑死妓蛮,一個胖子當(dāng)著我的面吹牛怠李,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛤克,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼捺癞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了构挤?” 一聲冷哼從身側(cè)響起髓介,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筋现,沒想到半個月后唐础,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矾飞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年一膨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洒沦。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡豹绪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出申眼,到底是詐尸還是另有隱情瞒津,我是刑警寧澤蝉衣,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站巷蚪,受9級特大地震影響病毡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屁柏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一啦膜、第九天 我趴在偏房一處隱蔽的房頂上張望佑力。 院中可真熱鬧署照,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽届宠。三九已至烁落,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豌注,已是汗流浹背伤塌。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轧铁,地道東北人每聪。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像齿风,于是被迫代替她去往敵國和親药薯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 50個常用的sql語句 Student(S#,Sname,Sage,Ssex) 學(xué)生表 Course(C#,Cna...
    最美的太陽WW閱讀 3,158評論 0 23
  • 轉(zhuǎn)載救斑,覺得這篇寫 SQLAlchemy Core童本,寫得非常不錯。不過后續(xù)他沒寫SQLAlchemy ORM... ...
    非夢nj閱讀 5,372評論 1 14
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,225評論 0 7
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,790評論 0 11
  • 我從遠(yuǎn)方來從混沌初開到宇宙不在你說不見沒有關(guān)系我是來看海
    木卯丁閱讀 162評論 0 2