最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql order by limit 1和max的比較及說(shuō)明

 更新時(shí)間:2025年09月12日 09:20:02   作者:hammring  
使用ORDER BY + LIMIT 1和MAX查詢最大值時(shí),ORDER BY + LIMIT 1更快,因主鍵索引有序,ORDER BY在找到第一條數(shù)據(jù)后停止,而MAX直接通過(guò)索引獲取最大值,無(wú)需遍歷表,執(zhí)行計(jì)劃顯示前者使用索引排序,后者利用索引優(yōu)化直接返回結(jié)果

在一次數(shù)據(jù)的需求中,去用order by+limit 1和 max兩種方式求數(shù)據(jù)的最大值時(shí),發(fā)現(xiàn)在同一過(guò)濾條件下order by limit 1執(zhí)行時(shí)間要比max快。然后從一下兩個(gè)角度對(duì)問(wèn)題進(jìn)行來(lái)思考。

1.查看執(zhí)行計(jì)劃

  • a.max查詢計(jì)劃

  • b.order by+limit 1查詢計(jì)劃

其中Extra是指執(zhí)行情況的描述和說(shuō)明。max的extra對(duì)應(yīng)的值是 Select tables optimized away

order by + limit 的extra選項(xiàng)對(duì)應(yīng)的值是 Using index

extra項(xiàng)解釋:

Select tables optimized away:

使用某些聚合函數(shù)(比如 max、min)來(lái)訪問(wèn)存在索引的某個(gè)字段

來(lái)自于mysql官網(wǎng)對(duì)Select tables optimized away的描述:

For explains on simple count queries (i.e. explain select count(*) from 
people) the extra section will read "Select tables optimized away.
" This is due to the fact that MySQL can read the result directly from
 the table internals and  therefore does not need to perform the select.

Using index:直接在主鍵索引上完成查詢和所有數(shù)據(jù)的獲取。

2.order by和where的執(zhí)行順序

是否是先做的order by,后使用where過(guò)濾。

結(jié)論:因?yàn)閙ax和order by+limit 1都是使用的主鍵值進(jìn)行查詢,而主鍵在mysql中是b+樹(shù)。在葉子節(jié)點(diǎn)主鍵id本身就是按從小大的順序排列的。所以在查詢中會(huì)出現(xiàn)以下兩種情況:

a.如果是查詢普通列(非主鍵且該值沒(méi)有索引列)條件,max()的查詢速度要優(yōu)于order by+limit 1,原因是從explain的執(zhí)行計(jì)劃中可以看出:order by+limit 1使用了索引,而使用max根本沒(méi)有遍歷表或索引就返回?cái)?shù)據(jù)了

b.如果是主鍵值的查詢可以分兩種情況來(lái)討論:

1.)如果是max()和order by速度的比較

max()的速度要比order by快,order by會(huì)把所有查詢到的結(jié)果并展示出來(lái)。

select max(id) from  table_name:
select id  from  table_name  order by id desc;

2.)如果是max()和order by+limit 1 速度的比較

order by+limit 1會(huì)在查到第一條數(shù)據(jù)時(shí)返回結(jié)果。而不是對(duì)整個(gè)結(jié)果進(jìn)行排序。

如果使用索引來(lái)完成排序,這將非???。

如果你將LIMIT row_count子句與ORDER BY子句組合在一起使用的話,一旦找到第一個(gè)row_count之后,MySQL不會(huì)對(duì)結(jié)果集的任何剩余部分進(jìn)行排序。

這種行為的一種表現(xiàn)形式是,一個(gè)ORDER BY查詢帶或者不帶LIMIT可能返回行的順序是不一樣的。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL聚合查詢案例講解

    MySQL聚合查詢案例講解

    這篇文章主要介紹了MySQL聚合查詢案例講解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • mysql 查詢數(shù)據(jù)庫(kù)響應(yīng)時(shí)長(zhǎng)的方法示例

    mysql 查詢數(shù)據(jù)庫(kù)響應(yīng)時(shí)長(zhǎng)的方法示例

    要查詢MySQL數(shù)據(jù)庫(kù)的響應(yīng)時(shí)長(zhǎng),通常我們需要測(cè)量查詢執(zhí)行的時(shí)間,本文主要介紹了mysql 查詢數(shù)據(jù)庫(kù)響應(yīng)時(shí)長(zhǎng)的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 深入Mysql,SqlServer,Oracle主鍵自動(dòng)增長(zhǎng)的設(shè)置詳解

    深入Mysql,SqlServer,Oracle主鍵自動(dòng)增長(zhǎng)的設(shè)置詳解

    本篇文章是對(duì)Mysql,SqlServer,Oracle主鍵自動(dòng)增長(zhǎng)的設(shè)置進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL8.0中你必須要知道的索引新特性

    MySQL8.0中你必須要知道的索引新特性

    MySQL8.0索引新特性,支持降序索引,降序索引以降序存儲(chǔ)鍵值,下面這篇文章主要給大家介紹了關(guān)于MySQL8.0中你必須要知道的索引新特性的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MySQL DML語(yǔ)句整理匯總

    MySQL DML語(yǔ)句整理匯總

    這篇文章主要介紹了MySQL DML語(yǔ)句整理匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL數(shù)據(jù)庫(kù)中varchar類型的數(shù)字比較大小的方法

    MySQL數(shù)據(jù)庫(kù)中varchar類型的數(shù)字比較大小的方法

    varchar類型的數(shù)據(jù)是不能直接比較大小的,那么MySQL數(shù)據(jù)庫(kù)中varchar類型如何進(jìn)行數(shù)字比較大小的,本文就詳細(xì)的介紹一下
    2021-11-11
  • MySQL聯(lián)結(jié)表介紹以及使用詳解

    MySQL聯(lián)結(jié)表介紹以及使用詳解

    這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)結(jié)表介紹及使用的相關(guān)資料,聯(lián)結(jié)SQL最強(qiáng)大的功能之一就是能在數(shù)據(jù)檢索查詢的執(zhí)行中聯(lián)結(jié)表,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Mysql中explain作用詳解

    Mysql中explain作用詳解

    這篇文章主要介紹了Mysql中explain的相關(guān)內(nèi)容,涉及索引的部分知識(shí),具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • SQL使用ROW_NUMBER() OVER函數(shù)生成序列號(hào)

    SQL使用ROW_NUMBER() OVER函數(shù)生成序列號(hào)

    這篇文章主要介紹了SQL使用ROW_NUMBER() OVER函數(shù)生成序列號(hào),ROW_NUMBER()從1開(kāi)始,為每一條分組記錄返回一個(gè)數(shù)字,下面文章內(nèi)容具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2021-12-12
  • MySQL FIND_IN_SET函數(shù)的使用場(chǎng)景

    MySQL FIND_IN_SET函數(shù)的使用場(chǎng)景

    本文介紹了MySQL中FIND_IN_SET函數(shù)的基本語(yǔ)法和使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評(píng)論

若羌县| 海宁市| 大关县| 泗阳县| 常州市| 吕梁市| 财经| 交口县| 东乌| 永城市| 杨浦区| 苗栗县| 红河县| 利辛县| 库车县| 沅江市| 新乐市| 十堰市| 太保市| 获嘉县| 景东| 永城市| 察雅县| 闸北区| 潜江市| 台东县| 宁乡县| 吴旗县| 昔阳县| 崇明县| 新田县| 西宁市| 邯郸县| 永春县| 枣庄市| 十堰市| 江陵县| 安陆市| 化州市| 阳春市| 麻城市|