Heim Datenbank MySQL-Tutorial MySQL优化器中一个Count和覆盖索引的问题_MySQL

MySQL优化器中一个Count和覆盖索引的问题_MySQL

Jun 01, 2016 pm 01:34 PM
where

bitsCN.com

MySQL优化器中一个Count和覆盖索引的问题

 

MySQL优化器中一个Count和覆盖索引的问题_MySQL

 

现象说明

       其实这里主要要说明的是一个优化器还需要改进的地方。

 

优化器会根据where条件和select_list里面的字段决定在使用一个索引(sta)后,是否需要回表—回到聚集索引取数据。

 

基本的做法是:在确定了一个索引后,将select_list和where中出现的所有字段都拿来判断一下,如果字段都存在于sta索引中,则可以使用覆盖索引。

 

第一个explan可以用上覆盖索引(Using Index), 是因为select_list里面只有count(*),而count(*)在语法解析阶段就被特殊处理,不作为特殊字段。

 

第二个字段在现在的实现中,因为gmt不是sta索引的一部分(sta索引定义上只有sta一个字段,算上聚集索引结构,就是sta,auci)。所以最后判定为不能使用覆盖索引。

 

性能差别

         表中放入500w数据以后,这两个查询的时间相差25倍(0.19s vs  5s)。

 

存在改进

         其实我说这个“不科学”,是因为第二个语句居然不能使用覆盖索引。按照count(gmt)的语义,是计算gmt不为NULL的所有行的数目。但是表定义中,分分明已经说明了gmt为not null。那么就可以转成count(*)了!

     目前因为count、sum、count(distinct)这些操作的处理方法被揉在一起,因此没有特别分开。

 

应用警惕

         好在按照正常的习惯,需要计算总数时,最多是count(auci)或者count(*), 不会故意去count一个别的字段。当时若使用的是MyISAM,就需要小心了。

 

         从上面的分析可以推测得到,如果这是个MyISAM表,还是一样的where条件,count(*)是可以使用覆盖索引的,但是count(auci)就不行了。

 

MySQL优化器中一个Count和覆盖索引的问题_MySQL

bitsCN.com
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein praktischer Leitfaden zur Where-Methode in Laravel-Sammlungen Ein praktischer Leitfaden zur Where-Methode in Laravel-Sammlungen Mar 10, 2024 pm 04:36 PM

Praktischer Leitfaden zur Where-Methode in Laravel-Sammlungen Während der Entwicklung des Laravel-Frameworks stellen Sammlungen eine sehr nützliche Datenstruktur dar, die umfangreiche Methoden zur Datenbearbeitung bereitstellt. Unter diesen ist die Where-Methode eine häufig verwendete Filtermethode, mit der Elemente in einer Sammlung basierend auf bestimmten Bedingungen gefiltert werden können. In diesem Artikel wird die Verwendung der Where-Methode in Laravel-Sammlungen vorgestellt und ihre Verwendung anhand spezifischer Codebeispiele demonstriert. 1. Grundlegende Verwendung der Where-Methode

So verwenden Sie die Where-Methode in Laravel-Sammlungen So verwenden Sie die Where-Methode in Laravel-Sammlungen Mar 10, 2024 pm 10:21 PM

So verwenden Sie die Where-Methode in der Laravel-Sammlung: Laravel ist ein beliebtes PHP-Framework, das eine Fülle von Funktionen und Tools bereitstellt, um Entwicklern die schnelle Erstellung von Anwendungen zu erleichtern. Unter anderem ist Collection eine sehr praktische und leistungsstarke Datenstruktur in Laravel. Entwickler können Sammlungen verwenden, um verschiedene Vorgänge an Daten durchzuführen, wie z. B. Filtern, Zuordnen, Sortieren usw. In Sammlungen ist die Where-Methode eine häufig verwendete Methode zum Filtern der Sammlung basierend auf angegebenen Bedingungen.

Vom Anfänger bis zum Experten: Beherrschen Sie die Fähigkeiten im Umgang mit Ist- und Wo-Selektoren Vom Anfänger bis zum Experten: Beherrschen Sie die Fähigkeiten im Umgang mit Ist- und Wo-Selektoren Sep 08, 2023 am 09:15 AM

Vom Anfänger bis zum Experten: Beherrschen Sie die Fähigkeiten im Umgang mit Is- und Where-Selektoren. Einführung: Im Prozess der Datenverarbeitung und -analyse ist der Selektor ein sehr wichtiges Werkzeug. Durch Selektoren können wir die erforderlichen Daten entsprechend bestimmten Bedingungen aus dem Datensatz extrahieren. In diesem Artikel werden die Verwendungsfähigkeiten von is- und where-Selektoren vorgestellt, um den Lesern zu helfen, die leistungsstarken Funktionen dieser beiden Selektoren schnell zu beherrschen. 1. Verwendung des is-Selektors Der is-Selektor ist ein grundlegender Selektor, der es uns ermöglicht, den Datensatz basierend auf gegebenen Bedingungen auszuwählen.

Die grundlegende Verwendung von MySQL Left Join und der Unterschied zwischen On und Where Die grundlegende Verwendung von MySQL Left Join und der Unterschied zwischen On und Where Jun 02, 2023 pm 11:54 PM

Vorwort Wenn wir SQL-Anweisungen schreiben, können wir die Verwendung von Verbindungsschlüsselwörtern wie innere Verbindungen und äußere Verbindungen nicht vermeiden. Ich werde hier ein Bild veröffentlichen, das ich an anderer Stelle gefunden habe. Es zeigt die gängigen Linktypen in diesem Artikel als Beispiel. Das Schlüsselwort LEFTJOIN gibt alle Zeilen aus der linken Tabelle zurück, auch wenn es in der rechten Tabelle keine passenden Zeilen gibt. Tatsächlich ist Leftjoin im wahrsten Sinne des Wortes leichter zu verstehen, aber es gibt immer noch einige Probleme bei der Verwendung. Wenn die Bedingung beispielsweise nach „on“ und „nach wo“ lautet, sind ihre Ergebnisse völlig unterschiedlich

Nutzungsanalyse der Where-Methode in der Laravel-Sammlung Nutzungsanalyse der Where-Methode in der Laravel-Sammlung Mar 09, 2024 pm 06:51 PM

Laravel ist ein beliebtes PHP-Entwicklungsframework, das umfangreiche und praktische Funktionen bietet. Die Sammlung ist eine der sehr wichtigen Datenstrukturen in Laravel. Die Collection-Klasse bietet viele leistungsstarke Methoden, darunter die Where-Methode. In diesem Artikel werden spezifische Codebeispiele verwendet, um die Verwendung der where-Methode in Laravel-Sammlungen zu analysieren. 1. Erstellen Sie eine Sammlung. Zuerst müssen wir eine Sammlung erstellen, die einige Daten enthält. Kann

Detaillierte Erläuterung der Where-Methode der Laravel-Sammlung Detaillierte Erläuterung der Where-Methode der Laravel-Sammlung Mar 10, 2024 pm 01:33 PM

Laravel ist ein beliebtes PHP-Framework und seine Collections-Klasse bietet leistungsstarke Datenverarbeitungsfunktionen. Unter diesen ist die Where-Methode eine der am häufigsten verwendeten Methoden in Sammlungsklassen und wird zum Filtern von Daten verwendet, die Bedingungen erfüllen. In diesem Artikel wird die Where-Methode der Laravel-Sammlung ausführlich vorgestellt, einschließlich Verwendungsmethoden, Parameterbedeutungen und spezifischer Codebeispiele. 1. Überblick über die Where-Methode Die Where-Methode wird verwendet, um Elemente in der Sammlung zu filtern, die bestimmte Bedingungen erfüllen und a zurückgeben

So verwenden Sie die WHERE-Klausel in SQL, um Auswahlkriterien anzugeben So verwenden Sie die WHERE-Klausel in SQL, um Auswahlkriterien anzugeben Jun 03, 2023 pm 04:31 PM

SQLWHERE-Klausel Die WHERE-Klausel wird zur Angabe der Auswahlkriterien verwendet. Um Daten aus einer Tabelle bedingt auszuwählen, fügen Sie der SELECT-Anweisung eine WHERE-Klausel hinzu. Die Syntax lautet wie folgt: SELECT Spaltenname FROM Tabellenname WHERE Spaltenoperatorwert Die folgenden Operatoren können in der WHERE-Klausel verwendet werden: =: gleich: ungleich >: größer als =: größer oder gleich 1965

Häufige Fehler und Lösungen für die Where-Methode in Laravel Häufige Fehler und Lösungen für die Where-Methode in Laravel Mar 10, 2024 pm 06:03 PM

Häufige Fehler und Lösungen für die Where-Methode in Laravel. Bei der Entwicklung mit dem Laravel-Framework verwenden wir häufig EloquentORM, um die Datenbank zu betreiben. Unter diesen ist die Where-Methode eine sehr häufig verwendete Methode zum Filtern von Daten in der Datenbank. Aufgrund mangelnder Vertrautheit mit dem Laravel-Framework oder mangelndem tiefem Verständnis von EloquentORM können bei der Verwendung der where-Methode jedoch leicht einige häufige Fehler gemacht werden. In diesem Artikel werden einige gängige W vorgestellt

See all articles