自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)庫(kù)查詢(xún)的分頁(yè)優(yōu)化技巧

數(shù)據(jù)庫(kù)
本文介紹一種常用的技巧:通過(guò)簡(jiǎn)單的重新構(gòu)造一下查詢(xún)SQL語(yǔ)句從而大幅提高查詢(xún)性能的方法。

分頁(yè)瀏覽功能是常見(jiàn)的Web應(yīng)用功能,對(duì)于MySQL數(shù)據(jù)庫(kù)來(lái)說(shuō)可以很輕松的使用limit語(yǔ)句實(shí)現(xiàn)分頁(yè),而對(duì)于SQL Server數(shù)據(jù)庫(kù)來(lái)說(shuō),常見(jiàn)的方法是使用數(shù)據(jù)集本身的游標(biāo)實(shí)現(xiàn)分頁(yè),這種方法對(duì)于少量數(shù)據(jù)來(lái)說(shuō)沒(méi)什么問(wèn)題,但是對(duì)于稍大一點(diǎn)的數(shù)據(jù)量,例如幾十萬(wàn)條數(shù)據(jù),則查詢(xún)速度會(huì)降低很多,這里我介紹一種常用的技巧,只要簡(jiǎn)單的重新構(gòu)造一下查詢(xún)SQL語(yǔ)句,就能大幅提高查詢(xún)性能的方法。

在分頁(yè)算法中,影響查詢(xún)速度的關(guān)鍵因素在于返回?cái)?shù)據(jù)集的大小,我們先在數(shù)據(jù)表中設(shè)置一個(gè)名為id的主鍵,數(shù)值為自增量的整數(shù),然后通過(guò)重構(gòu)查詢(xún)SQL語(yǔ)句,就可以實(shí)現(xiàn)SQL查詢(xún)的優(yōu)化,重構(gòu)的SQL如下所示:

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


  下面的JSP演示代碼中,intPageSize為頁(yè)大小,intPage為頁(yè)碼,id為主鍵,演示了操作一個(gè)t_Product表,并加入各類(lèi)查詢(xún)條件之后的重構(gòu)SQL的主要語(yǔ)句,經(jīng)過(guò)實(shí)際調(diào)試,經(jīng)過(guò)這樣簡(jiǎn)單優(yōu)化后的SQL查詢(xún)速度遠(yuǎn)遠(yuǎn)高于優(yōu)化前的查詢(xún)速度。

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) "; //通過(guò)子查詢(xún)加快速度
sql=sql+" order by id desc ";

【編輯推薦】

  1. 三種優(yōu)化MySQL數(shù)據(jù)庫(kù)查詢(xún)的方法簡(jiǎn)介
  2. 優(yōu)化SQL Server數(shù)據(jù)庫(kù)查詢(xún)方法
  3. Oracle數(shù)據(jù)庫(kù)查詢(xún)的五個(gè)技巧
責(zé)任編輯:yangsai 來(lái)源: 月光博客
相關(guān)推薦

2009-07-06 21:20:34

SQL Server數(shù)

2012-07-23 14:30:33

Oracle

2011-05-19 10:29:40

數(shù)據(jù)庫(kù)查詢(xún)

2010-08-26 14:39:54

Infobright數(shù)

2013-01-04 10:00:12

MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)查詢(xún)優(yōu)化

2013-05-21 10:06:11

數(shù)據(jù)庫(kù)查詢(xún)優(yōu)化

2011-08-15 10:22:19

分頁(yè)查詢(xún)數(shù)據(jù)庫(kù)

2011-03-14 13:51:21

LAMPMySQL

2021-01-31 17:50:41

數(shù)據(jù)庫(kù)查詢(xún)程序員

2023-07-12 08:55:16

PawSQL數(shù)據(jù)庫(kù)

2010-11-25 14:21:16

MySQL查詢(xún)分頁(yè)

2009-07-01 10:01:33

JSP分頁(yè)查詢(xún)MySQL數(shù)據(jù)庫(kù)

2018-04-10 14:36:18

數(shù)據(jù)庫(kù)MySQL優(yōu)化技巧

2011-03-01 16:30:55

Oracle

2011-04-02 09:33:08

MySQL數(shù)據(jù)庫(kù)查詢(xún)效率

2011-03-11 16:25:53

Oracle數(shù)據(jù)庫(kù)

2011-04-02 09:33:13

MySQL數(shù)據(jù)庫(kù)查詢(xún)效率

2011-04-02 09:23:19

MySQL數(shù)據(jù)庫(kù)查詢(xún)效率

2022-06-20 05:40:25

數(shù)據(jù)庫(kù)MySQL查詢(xún)

2010-08-27 10:20:11

DB2數(shù)據(jù)庫(kù)優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)