關(guān)于mysql中innodb的count優(yōu)化問題分享
一般采用二級索引去count:
比如:id 是pk aid是secondary index
采用
select count(*) from table where id >=0;
或
select count(*) from table;
效果是一樣的,都是默認使用pk索引,且都要全表掃描,雖然第一種性能可能高一些,但是沒有明顯區(qū)別。
但是如果用secondary index
select count(*) from table where aid>=0;
則會快很多。
為什么用 secondary index 掃描反而比 primary key 掃描來的要快呢?這就需要了解innodb的 clustered index 和 secondary index 之間的區(qū)別了。
innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 則是單獨存放,然后有個指針指向 primary key。
因此,需要進行 count(*) 統(tǒng)計表記錄總數(shù)時,利用 secondary index 掃描起來,顯然更快。
而primary key則主要在掃描索引,同時要返回結(jié)果記錄時的作用較大。
相關(guān)文章
mysql5.7.24 解壓版安裝步驟及遇到的問題小結(jié)
這篇文章主要介紹了mysql5.7.24 解壓版安裝步驟以及遇到的問題 ,文中給大家提出了解決方案,需要的朋友可以參考下2018-11-11MySQL數(shù)據(jù)庫使用規(guī)范總結(jié)
本篇文章給大家詳細分類總結(jié)了數(shù)據(jù)庫相關(guān)規(guī)范,幫助大家發(fā)揮出數(shù)據(jù)庫的性能,感興趣的朋友可以了解下2020-08-08MySQL用戶和數(shù)據(jù)權(quán)限管理詳解
這篇文章主要為大家詳細介紹了MySQL數(shù)據(jù)庫管理中的用戶和數(shù)據(jù)權(quán)限管理,文中的示例代碼講解詳細,對我們學習MySQL有一定幫助,需要的可以參考一下2022-08-08解讀mysql主從配置及其原理分析(Master-Slave)
在windows下配置的,后面會在Linux下配置進行測試,需要配置mysql數(shù)據(jù)庫同步的朋友可以參考下。2011-05-05Windows系統(tǒng)下MySQL添加到系統(tǒng)服務(wù)方法(mysql解壓版)
這篇文章主要介紹了Windows系統(tǒng)下MySQL添加到系統(tǒng)服務(wù)方法,主要針對mysql解壓版,感興趣的朋友參考下吧2016-05-05