我們做的大部分系統都會涉及到與資料庫數據的交互。在數據量比較大時,為了性能和交互的友好,就需要做分頁查詢了。
如果是mysql資料庫的話,做分頁查詢大家就離不開使用limit了。
比如我們要對表「coder」中的數據做分頁查詢,每頁20條數據。那程序生成的查詢第一頁的數據的sql會是下面這樣。
而查詢第二頁時,生成的查詢sql語句就是下面這樣。
以此類推。
如果數據量不是太大時,通過上面的limit的方式做分頁是沒有問題的。
但是今天要對大家說的就是,這樣的limit的方式在有的時候是有問題的。問題就是在數據量很大時,隨著越往後翻頁limit的兩個參數中的第一個參數也會越大,sql的執行耗時也會越來越大。
因為limit的兩個參數中的第一個是表示偏移量的,也就是要跳過多少條數據,這個過程隨著要跳過的數據量的增大,是非常耗費時間的。
那這種情況要怎麼處理呢?
這裡就可以用到主鍵索引了,可以像下面這樣寫sql語句。
查詢第一頁時,sql是下面這樣。
或者
而以後的每一頁查詢時,都需要依靠前一頁的最大(如果是降序的話,就是最小)id值。假設上一頁最大的id值是9527,那查詢下一頁的SQL語句就會是下面這樣。
通過這樣的方式,就能準確的命中索引,並從索引位置獲取指定條數數據,就搞笑很多了。
希望今天的內容能幫助到朋友們。
看完了本文,如果覺得寫得還行,或者心情還不錯,就小手抖一抖,長按「點讚」按鈕,支持我一下吧。
您的支持是我後續寫東西的動力。