婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)

MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)

熱門標(biāo)簽:新鄉(xiāng)智能外呼系統(tǒng)好處 地圖標(biāo)注客戶付款 臨沂做地圖標(biāo)注 廣東400企業(yè)電話申請(qǐng)流程 宜賓全自動(dòng)外呼系統(tǒng)廠家 石家莊400電話辦理公司 申請(qǐng)400電話電話價(jià)格 咸陽(yáng)防封電銷卡 許昌外呼增值業(yè)務(wù)線路

【SQL】SQL分頁(yè)查詢總結(jié)

開發(fā)過程中經(jīng)常遇到分頁(yè)的需求,今天在此總結(jié)一下吧。

簡(jiǎn)單說(shuō)來(lái)方法有兩種,一種在源上控制,一種在端上控制。源上控制把分頁(yè)邏輯放在SQL層;端上控制一次性獲取所有數(shù)據(jù),把分頁(yè)邏輯放在UI上(如GridView)。顯然,端上控制開發(fā)難度低,適于小規(guī)模數(shù)據(jù),但數(shù)據(jù)量增大時(shí)性能和IO消耗無(wú)法接受;源上控制在性能和開發(fā)難度上較為平衡,適應(yīng)大多數(shù)業(yè)務(wù)場(chǎng)景;除此之外,還可以根據(jù)客觀情況(性能要求,源與端的資源占用等)在源和端之間加一層,應(yīng)用特殊算法和技術(shù)進(jìn)行處理。以下主要討論源上,即SQL上的分頁(yè)。

分頁(yè)的問題其實(shí)就是在滿足條件的一堆有序數(shù)據(jù)中截取當(dāng)前所需要展示的那部分。實(shí)際上各種數(shù)據(jù)庫(kù)都考慮到分頁(yè)問題而內(nèi)置了一些策略,比如MySql的LIMIT,Oracle的ROWNUM和ROW_NUMBER(),SqlServer的TOP和ROW_NUMBER(),基于此我們可以得到一系列分頁(yè)的方法。

1、 基于MySql的LIMIT和Oracle的ROWNUM,可以直接限制返回區(qū)間(以MySql為例,注意使用Oracle的ROWNUM時(shí)要應(yīng)用子查詢):

方法一、直接限制返回區(qū)間

SELECT * FROM table WHERE 查詢條件 ORDER BY 排序條件 LIMIT ((頁(yè)碼-1)*頁(yè)大小),頁(yè)大小;

優(yōu)點(diǎn):寫法簡(jiǎn)單。
缺點(diǎn):當(dāng)頁(yè)碼和頁(yè)大小過大時(shí),性能明顯下降。
適用:數(shù)據(jù)量不大。

2、基于LIMIT(MySql)、ROWNUM(Oracle)和TOP(SqlServer),他們可以限制返回的行數(shù),因此可以得到以下兩套通用的方法(以SqlServer為例):

方法二、NOT IN

SELECT TOP 頁(yè)大小 * FROM table WHERE 主鍵 NOT IN
(
 SELECT TOP (頁(yè)碼-1)*頁(yè)大小 主鍵 FROM table WHERE 查詢條件 ORDER BY 排序條件
)
ORDER BY 排序條件

優(yōu)點(diǎn):通用性強(qiáng)。
缺點(diǎn):當(dāng)數(shù)據(jù)量較大時(shí)向后翻頁(yè),NOT IN中的數(shù)據(jù)過大會(huì)影響性能。
適用:數(shù)據(jù)量不大。

方法三、MAX

SELECT TOP 頁(yè)大小 * FROM table WHERE 查詢條件 AND id >
(
 SELECT ISNULL(MAX(id),0) FROM 
 (
  SELECT TOP ((頁(yè)碼-1)*頁(yè)大小) id FROM table WHERE 查詢條件 ORDER BY id 
 ) AS tempTable
) 
ORDER BY id

優(yōu)點(diǎn):速度快,特別是當(dāng)id為主鍵時(shí)。
缺點(diǎn):適用面窄,要求排序條件單一且可比較。
適用:簡(jiǎn)單排序(特殊情況也可嘗試轉(zhuǎn)換成類似可比較值處理)。

3、基于SqlServer和Oracle的ROW_NUMBER(),可以得到返回?cái)?shù)據(jù)的行號(hào),基于此在限制返回區(qū)間得到如下方法(以SqlServer為例):

方法四、ROW_NUMBER()

SELECT TOP 頁(yè)大小 * FROM 
(
 SELECT TOP (頁(yè)碼*頁(yè)大小) ROW_NUMBER() OVER (ORDER BY 排序條件) AS RowNum, * FROM table WHERE 查詢條件
) AS tempTable
WHERE RowNum BETWEEN (頁(yè)碼-1)*頁(yè)大小+1 AND 頁(yè)碼*頁(yè)大小
ORDER BY RowNum

優(yōu)點(diǎn):在數(shù)據(jù)量較大時(shí)相比NOT IN有優(yōu)勢(shì)。
缺點(diǎn):小數(shù)據(jù)量時(shí)不如NOT IN。
適用:大部分分頁(yè)查詢需求。

以上是自己總結(jié)的拙見,性能比較來(lái)自網(wǎng)上資料及個(gè)人判斷,并沒有深入實(shí)驗(yàn),不當(dāng)之處請(qǐng)大家指正。

到此這篇關(guān)于MySQL中分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)的文章就介紹到這了,更多相關(guān)MySQL中分頁(yè)查詢的方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家

您可能感興趣的文章:
  • MySQL優(yōu)化教程之超大分頁(yè)查詢
  • MySQL百萬(wàn)級(jí)數(shù)據(jù)量分頁(yè)查詢方法及其優(yōu)化建議
  • MySQL百萬(wàn)級(jí)數(shù)據(jù)分頁(yè)查詢優(yōu)化方案
  • mysql千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)查詢性能優(yōu)化
  • Mysql Limit 分頁(yè)查詢優(yōu)化詳解
  • php分頁(yè)查詢mysql結(jié)果的base64處理方法示例
  • 詳解MySQL的limit用法和分頁(yè)查詢語(yǔ)句的性能分析
  • MySQL 分頁(yè)查詢的優(yōu)化技巧

標(biāo)簽:貴州 臺(tái)灣 阜新 鎮(zhèn)江 合肥 北京 鷹潭 日照

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)》,本文關(guān)鍵詞  MySQL,中,SQL,分頁(yè),查詢,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 周宁县| 内江市| 高陵县| 久治县| 安远县| 榆中县| 渝北区| 乐平市| 砀山县| 杭锦后旗| 黄骅市| 沭阳县| 佛教| 沂南县| 长汀县| 陇南市| 伊川县| 阿克苏市| 浦县| 大洼县| 防城港市| 车险| 迁安市| 巴彦县| 阜城县| 浙江省| 县级市| 昌吉市| 明星| 钦州市| 铁岭县| 山阳县| 霍林郭勒市| 阿克苏市| 塔城市| 榆社县| 柳江县| 平凉市| 连江县| 宜丰县| 利川市|