Zuerst möchte ich vergleichen count (*) und count (id), die eine bessere Leistung hat?warum mysql count (*) hat eine bessere Leistung als count (id)
mysql Version
5.6.21-1~dotdeb.1-log
Tisch info
PRIMARY KEY (`id`),
KEY `is_availability` (`is_availability`,`is_del`)
ENGINE=InnoDB AUTO_INCREMENT=48993819 DEFAULT CHARSET=utf8
vergleichen, ohne in dem Zustand
select count(*) from op_log; +----------+ | count(*) | +----------+ | 48989975 | +----------+ 1 row in set (10.02 sec) select count(id) from op_log ; +-----------+ | count(id) | +-----------+ | 48989990 | +-----------+ 1 row in set (12.05 sec)
count(*)
besser als count(id)
vergleichen mit dem Zustand
select count(*) from op_log where is_availability=1; +----------+ | count(*) | +----------+ | 48990038 | +----------+ 1 row in set (15.86 sec) select count(id) from op_log where is_availability=1; +-----------+ | count(id) | +-----------+ | 48990096 | +-----------+ 1 row in set (17.13 sec)
count(*)
immer noch besser alscount(id)
Also, wenn ich den Schluss ziehen kann, dass count(*)
hat eine bessere Leistung als count(id)
und warum ist das?
Von High Performance MySQL
bekam ich
wenn mysql einige col kennt, kann nicht NULL sein, es wird count (col) optimieren intern zu zählen (*)
So vermute ich, dass die Zeit verbringen mehr wird verwendet, um diese Optimierungsarbeit zu machen.
Wie wird 'id' definiert? – Matthew
Suche ist dein Freund: https://duckduckgo.com/?q=mysql+count+performance&t=ffsb - es gibt viele Blog-Beiträge zu diesem Thema. – Augusto
Mögliches Duplikat von [was ist schneller, Anzahl (\ *) oder Anzahl (Tabelle \ _field \ _name) in mysql?] (Http://StackOverflow.com/questions/7515531/whats-faster-count-or-counttable-field -name-in-mysql) – Augusto