2016-04-05 15 views
0

zu bekommen Ich habe diese AussageWeise schnellste mysql Ergebnis

SELECT * FROM table where somenotuniquefield like '%\"$variable1\"%' and primaryuniquefield = '$variable2' "; 

Wird diese langsamer als erstes das einzigartige Feld setzen? so;

SELECT * FROM table where primaryuniquefield = '$variable2' and somenotuniquefield like '%\"$variable1\"%'"; 

scheint es logisch, dass die Antwort ja ist, aber ich will sicher wissen, bevor ich durchlaufen und wieder um meine MySQL-Anweisungen.

Dank im Voraus

+0

Sie können "EXPLAIN" vor Ihrer Abfrage verwenden, um zu sehen, wie viele Zeilen mysql liest ... – Random

+2

Überprüfen Sie es. http://stackoverflow.com/questions/4035760/does-theorder-of-fields-in-a-where-clause-affection-performance-in-mysql – Mattia

+0

@David was Sie wollen – iOS

Antwort

0

In Ihrem Beispiel MySQL optimiert die Abfrage und es wird zuerst mit dem Primärschlüssel für den Datensatz suchen.

Verwenden Sie EXPLAIN vor der Abfrage. Dies gibt Ihnen einige Informationen darüber, wie die Suche durchgeführt wurde.

Eine weitere Möglichkeit zu prüfen, ob Ihre Anfrage performant ist, können Sie diese Abfrage verwenden: (. Je höher der Wert, desto mehr „teuer“ ist die Abfrage)

SHOW STATUS LIKE 'last_query_cost' 

Wenn Sie brauchen mehr Daten, dann können Sie auf Profilierung drehen:

SET profiling = 1 

Ihre Abfrage starten und dann die Ergebnisse zeigen:

SHOW PROFILE 

Wenn Sie die Leistung messen, verwenden Sie immer SQL_NO_CACHE nach dem Wort SELECT, damit es nicht den internen Cache verwendet, der nicht erwünscht sein könnte.

0

Sie müssen die SQL-Anweisung, die der Planausführungsoptimierer für Sie bereits erledigt, nicht manuell neu anordnen.

In Ihrem Fall funktioniert so. Sie haben zwei Bedingungen

Die erste (wie) keine posible Index, den Sie verwenden sollten

Die zweite verwendet einen eindeutigen Index einen kompletten Scan der Tabelle tun, so dass nur 1 oder 0 Zeilen zurückgeben sein Gehen . Hat eine bessere Unterscheidung als die vorherige, so mysql es diesen Filter immer vor, als dergleichen

Die Reihenfolge seiner irrelevant

Wie vorgeschlagen zu verwenden, wird Sie die EXPLAIN-Befehl, check it out nutzen können.