Heim > Datenbank > MySQL-Tutorial > 关于mysql中innodb的count优化问题分享_MySQL

关于mysql中innodb的count优化问题分享_MySQL

WBOY
Freigeben: 2016-06-01 13:23:50
Original
910 Leute haben es durchsucht

bitsCN.com

一般采用二级索引去count:
比如:id 是pk aid是secondary index

采用

select count(*) from table where id >=0;

select count(*) from table;

效果是一样的,都是默认使用pk索引,且都要全表扫描,虽然第一种性能可能高一些,但是没有明显区别。

但是如果用secondary index

select count(*) from table where aid>=0;

则会快很多。

为什么用 secondary index 扫描反而比 primary key 扫描来的要快呢?这就需要了解innodb的 clustered index 和 secondary index 之间的区别了。

innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 则是单独存放,然后有个指针指向 primary key。
因此,需要进行 count(*) 统计表记录总数时,利用 secondary index 扫描起来,显然更快。
而primary key则主要在扫描索引,同时要返回结果记录时的作用较大。

bitsCN.com
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage