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

MySQL千萬級數(shù)據(jù)count(*)查詢太慢怎么辦?優(yōu)化技巧分享

 更新時間:2026年07月25日 09:24:14   作者:程序員一只長毛橘  
在MySQL中面對千萬級數(shù)據(jù)使用count(*)查詢總數(shù)時,InnoDB引擎會逐行掃描導(dǎo)致性能瓶頸,本文分享實戰(zhàn)優(yōu)化經(jīng)驗,教你如何通過選擇輔助索引、拆解復(fù)合索引為單列索引等方式,將查詢時間從120秒大幅縮短至3秒,提升查詢效率

MySQL中 select count(*) 千萬級別數(shù)據(jù)查詢

我們在實際開發(fā)過程中常常會用遇到查詢表中數(shù)據(jù)總數(shù),或者攜帶where條件的查詢總數(shù),而使用count(*)的時候會很影響查詢效率的,

例如:

select count(*) from table 
select count(*) from table where id = '' and column = ''

在MySQL中不同的存儲引擎對于count(*)有不同的實現(xiàn)方式。

  • MyISAM 引擎把一個表的總行數(shù)存在磁盤上,因此執(zhí)行count(*)的時候會直接返回這個數(shù),效率很高。
  • InnoDB引擎在執(zhí)行count(*)時,需要把數(shù)據(jù)一行一行地從引擎中讀取出來,然后累計計數(shù)。

當然,如果MyISAM后面也加上where條件的話,MyISAM也沒有那么快,我們在實際開發(fā)中,多數(shù)都需要事務(wù),所以建表都會選擇InnoDB。

使用count(*) 的時候

1,一定需要走索引,能走輔助索引 (選擇表中列較短的創(chuàng)建一個普通索引) 就走輔助索引,不能走也建議創(chuàng)建一個輔助索引。

ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 

使用索引和不使用索引查詢數(shù)據(jù)真不是一樣的。

2,如果使用count(*)建議一定是單表查詢,所以建表的時候,希望有所考慮。

3,建議表中取消掉復(fù)合索引(組合索引) ,把復(fù)合索引拆解成普通索引(單列索引)

圖片中復(fù)合索引,可拆解成普通索引,這樣做的意義是,count(*) 在MySQL中會被進行優(yōu)化,會走索引較短的列進行查詢,如果是這種復(fù)合索引的話,我測試過3200W的數(shù)據(jù)大概需要120秒,而走單列索引的話只需要3秒。

建議需要使用count(*) 的話,用explain來查看是否走了索引,走了那一個索引,如果是復(fù)合索引,請修改成普通索引,在進行查詢

explain select count(*) from table 
explain select count(*) from table where id = '' and column = ''

以上是我測試通過,并且實際生產(chǎn)的優(yōu)化。

總結(jié)

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • windows 10下解壓版MySql安裝配置方法教程

    windows 10下解壓版MySql安裝配置方法教程

    這篇文章主要為大家詳細介紹了windows 10下解壓版MySql安裝配置方法教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MySQL隔離級別和鎖機制的深入講解

    MySQL隔離級別和鎖機制的深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL隔離級別和鎖機制的相關(guān)資料,主要包括深入理解MySQL隔離級別和鎖機制使用實例、應(yīng)用技巧、基本知識點總結(jié)和需要注意事項,需要的朋友可以參考下
    2021-08-08
  • MySQL中order by的使用詳情

    MySQL中order by的使用詳情

    在使用select語句時可以結(jié)合order by對查詢的數(shù)據(jù)進行排序。如果不使用order by默認情況下MySQL返回的數(shù)據(jù)集,與它在底層表中的順序相同,可能與你添加數(shù)據(jù)到表中的順序一致,也可能不一致,如果希望得到的數(shù)據(jù)有順序,就該明確排序方式,下面詳細內(nèi)容需要的朋友可以參考一下
    2021-11-11
  • 如何恢復(fù)MYSQL的ROOT口令

    如何恢復(fù)MYSQL的ROOT口令

    如何恢復(fù)MYSQL的ROOT口令...
    2006-11-11
  • MySQL8.0高可用MIC的實現(xiàn)

    MySQL8.0高可用MIC的實現(xiàn)

    本文介紹了如何實現(xiàn)MySQL8.0高可用MIC,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10
  • MySQL主從復(fù)制原理以及需要注意的地方

    MySQL主從復(fù)制原理以及需要注意的地方

    這篇文章主要介紹了MySQL主從復(fù)制原理以及需要注意的地方,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • 一文詳解如何基于mysql dump進行全量備份還原

    一文詳解如何基于mysql dump進行全量備份還原

    在數(shù)據(jù)庫管理中,數(shù)據(jù)備份和恢復(fù)是非常重要的環(huán)節(jié),??mysqldump?? 是 MySQL 提供的一個非常強大的命令行工具,下面小編就和大家詳細介紹一下吧
    2025-10-10
  • MySQL事務(wù)的隔離級別詳情

    MySQL事務(wù)的隔離級別詳情

    這篇文章主要介紹了MySQL事務(wù)的隔離級別詳情,事務(wù)隔離級別越高,為避免沖突所花費的性能也就越多,即效率低。在“可重復(fù)讀”級別,實際上可以解決部分的虛讀問題,但是不能防止update更新產(chǎn)生的虛讀問題,要禁止虛讀產(chǎn)生,還是需要設(shè)置串行化隔離級別
    2022-07-07
  • MySQL中如何求平均值常見實例(AVG函數(shù)詳解)

    MySQL中如何求平均值常見實例(AVG函數(shù)詳解)

    MySQL avg()是一個聚合函數(shù),用于返回各種記錄中表達式的平均值,這篇文章主要介紹了MySQL中用AVG函數(shù)如何求平均值的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • MySQL5.7.16綠色版安裝教程詳解

    MySQL5.7.16綠色版安裝教程詳解

    這篇文章主要介紹了MySQL5.7.16綠色版安裝教程詳解的相關(guān)資料,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-10-10

最新評論

桐乡市| 东台市| 新河县| 南川市| 东港市| 芦山县| 衡南县| 科技| 阜平县| 屏东市| 拜泉县| 绥滨县| 武穴市| 玉门市| 盱眙县| 肃宁县| 蛟河市| 隆林| 繁昌县| 穆棱市| 秀山| 南漳县| 永平县| 东乡族自治县| 澜沧| 大石桥市| 吉木乃县| 图木舒克市| 太保市| 余庆县| 文安县| 华安县| 自贡市| 宁晋县| 隆子县| 呼和浩特市| 阳朔县| 陕西省| 安义县| 类乌齐县| 鹤岗市|