| 

.NET C# Java Javascript Exception

3
Hallo alle zusammen,
ich habe eine kleine Frage zu MySQL und der Optimierung von Statements.

Beispiel:
Ich habe folgende Tabelle:
CREATE TABLE IF NOT EXISTS EXAMPLE (
id INT NOT NULL,
last_update BIGINT NOT NULL DEFAULT 0,
PRIMAR KEY (id)
) ENGINE=InnoDB;


Gibt es jetzt einen Unterschied in der Geschwindigkeit bei den folgenden Abfragen:
1) SELECT id, last_update FROM EXAMPLE WHERE id = 1 AND last_update < 1000;
2) SELECT id, last_update FROM EXAMPLE WHERE last_update < 1000 AND id = 1;

zu 1) Der erste Teil der Where Klausel sollte ein Ergnis liefern, was dann mit dem zweiten Teil weiter "bearbeitet" wird.

zu 2) Der erste Teil der Where Klausel liefert die Menge x, welche dann mit dem zweiten Teil weiter "bearbeitet" wird.

Oder ist MySQL so schlau und erkennt den PK, wodurch immer Fall 1 ausgeführt wird?

Grüße und besten Dank für alle Infos.
News:
16.02.2012
michael2011 396 1 8
3 Antworten
3
Ja, MySQL analysiert vorher die Abfrage und wählt den Index mit den besten Erfolgschancen aus.
16.02.2012
LiRo 1,3k 1 9
2
Mit der Anweisung EXPLAIN (=> 7.2.1. EXPLAIN-Syntax (Informationen über ein SELECT erhalten) ) erfährst Du, was MySQL aus Deiner SELECT Abfrage macht, welche Indizes verwendet werden, ... :

EXPLAIN SELECT id, last_update FROM EXAMPLE WHERE id = 1 AND last_update < 1000;
16.02.2012
Xantiva 2,3k 2 9
1
Einiges über den Optimierer kannst Du hier nachlesen: Optimierungen der WHERE-Klausel aus dem Kapitel 7. Optimierung.
16.02.2012
Jaksa 4,0k 2 8

Stelle deine Mysql-Frage jetzt!