亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ROW_NUMBER() 分頁的時候,好像沒有利用非聚集索引

ROW_NUMBER() 分頁的時候,好像沒有利用非聚集索引

慕慕森 2018-12-03 14:12:44
<P>通過執行計劃分析來看,使用 ROW_NUMBER() 的時候,好像沒有利用非聚集索引</P> <P>with t_pager as (<BR>&nbsp;&nbsp;&nbsp; select *,myIndex = ROW_NUMBER() OVER (ORDER BY Empcode ) FROM Employee <BR>&nbsp;where EmpTypeID = 2</P> <P>)<BR>SELECT * from t_pager WHERE myIndex between 11 and 20;</P> <P>Empcode &nbsp;,EmpTypeID 這兩個字段加不加非聚集索引,計劃分析的結果都是一樣的。只有按照主鍵排序,計劃分析才會不一樣。</P> <P>分頁結果倒是正確的。效率好像還很高。嚴重不解中。</P> <P>&nbsp;</P>問題補充: 默認的情況,主鍵都是聚集索引呀。除非單獨設置。 排序是非常咱用資源的呀,利用索引的話,就可以節省很多的資源,這個對于分頁是很重要的! 聚集索引的話,正序和倒序執行計劃都是一樣的。不知道你有沒有看過,我剛剛看過了,一樣的。 ============= 服了你了。感謝你來捧場。 EmplID就是主鍵,就是默認的。是聚集索引。 如果是其他的分頁算法,那么就可以利用非聚集索引了。
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

1、ROW_NUMBER() 為什么要加載索引(管它是聚集還是非聚集)?排序操作而已。 2、主鍵 “絕對不等于” 聚集索引。 3、“只有按照主鍵排序,計劃分析才會不一樣”,說明你的主鍵完全是默認設置的。你要不試試(ORDER BY 你的主鍵 DESC),然后再看看執行計劃? ~~~~~~~~~~~~~~~~~~~~~~~~~~ 分析:這里需要了解的知識點主要在聚集索引和非聚集索引的存儲方式上,然后再加上“排序操作究竟是在干什么”,然后你就能非常清楚這個問題的“為什么”了。

查看完整回答
反對 回復 2018-12-07
  • 2 回答
  • 0 關注
  • 785 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號