Jeder weiß, dass in Tabellen, die InnoDB als Engine verwenden, Abfragen wie SELECT COUNT(*) FROM mytable
sehr ungenau und sehr langsam sind, insbesondere wenn die Tabelle größer wird und während der Ausführung dieser Abfrage ständig Zeilen eingefügt / gelöscht werden.
Wie ich es verstanden habe, speichert InnoDB die Zeilenzahl nicht in einer internen Variablen, was der Grund für dieses Problem ist.
Meine Frage ist: Warum ist das so? Wäre es so schwer, solche Informationen zu speichern? Es ist eine wichtige Information, in so vielen Situationen Bescheid zu wissen. Die einzige Schwierigkeit, die ich sehe, wenn eine solche interne Zählung implementiert würde, ist, wenn Transaktionen beteiligt sind: Wenn die Transaktion nicht festgeschrieben ist, zählen Sie die von ihr eingefügten Zeilen oder nicht?
PS: Ich bin kein Experte für DBs, ich bin nur jemand, der MySQL als einfaches Hobby hat. Also, wenn ich nur etwas Dummes gefragt habe, sei nicht übermäßig kritisch: D.
SELECT COUNT(*) FROM ...
Abfragen sind präzise. Wenn Sie möchten, kann phpMyAdmin so konfiguriert werden, dass auf Kosten der Geschwindigkeit immer exakte Zeilenzahlen verwendet werden. Weitere Informationen: stackoverflow.com/questions/11926259/…