資料庫查詢的分頁最佳化技巧

來源:互聯網
上載者:User

分頁瀏覽功能是常見的Web應用功能,對於MySQL資料庫來說可以很輕鬆的使用limit語句實現分頁,而對於SQL Server資料庫來說,常見的方法是使用資料集本身的遊標實現分頁,這種方法對於少量資料來說沒什麼問題,但是對於稍大一點的資料量,例如幾十萬條資料,則查詢速度會降低很多,這裡我介紹一種常用的技巧,只要簡單的重新構造一下查詢SQL語句,就能大幅提高查詢效能的方法。

在分頁演算法中,影響查詢速度的關鍵因素在於返回資料集的大小,我們先在資料表中設定一個名為id的主鍵,數值為自增量的整數,然後通過重構查詢SQL語句,就可以實現SQL查詢的最佳化,重構的SQL如下所示:

select top 頁大小 *
from table1
where id<=
(select min (id) from
(select top ((頁碼-1)*頁大小) id from table1 order by id desc) as T
)
order by id desc


下面的JSP示範代碼中,intPageSize為頁大小,intPage為頁碼,id為主鍵,示範了操作一個t_Product表,並加入各類查詢條件之後的重構SQL的主要語句,經過實際調試,經過這樣簡單最佳化後的SQL查詢速度遠遠高於最佳化前的查詢速度。

String sql=" from t_Product where 1=1 and ";
String ProductName = request.getParameter("ProductName");
if (ProductName!=null) sql=sql+"ProductName like '%" + ProductName + "%' and " ;
sql=sql.substring(0,sql.length()-4); // 去掉尾部的 and 字串
sql="select top " + String.valueOf(intPageSize) + " *" +sql+" and id <=(select min(id) from (select top " + String.valueOf(intPage*intPageSize) + " id " + sql + " order by id desc) as T) "; //通過子查詢加快速度
sql=sql+" order by id desc ";
  1. 三種最佳化MySQL資料庫查詢的方法簡介
  2. 最佳化SQL Server資料庫查詢方法
  3. Oracle資料庫查詢的五個技巧

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.