2017-07-03 2 views
-1

mit habe ich eine Ansicht mit der folgenden Bedingung:Wie die Leistung zu erhöhen, wenn MAX-Funktion in MySQL

select max(table_name.column1) AS `column1`, 
table_name.column AS column2, 
max(table_name.column3) AS column3, 
max(table_name.column4) AS column4 
from table_name 
where (table_name.column5 = 'message') 
group by table_name.column2 

Die select auf dieser Ansicht eine gewisse Auswirkung auf die Leistung verursacht.

Der Index der Tabelle sind: column1 ist PrimaryKey column2 Column5 indiziert ist

indiziert ist

Kann mir jemand mitteilen, wie die bessere Leistung aus der obigen Ansicht zu erhalten.

+0

See [Warum sollte ich einen MCVE für das, was mir scheint eine sehr einfache SQL-Abfrage sein] (http://meta.stackoverflow.com/questions/333952/why-should-i- bieten-ein-mcve-f Oder-was-scheint-mir-eine-sehr-einfache-SQL-Abfrage. Darüber hinaus erfordern Fragen zur Leistung immer ein EXPLAIN für die problematische Abfrage. – Strawberry

Antwort

0

Sie sollten die unseful vermeiden() um, wo condtion diese die Indexverwendung

select max(table_name.column1) AS `column1`, 
    table_name.column AS column2, 
    max(table_name.column3) AS column3, 
    max(table_name.column4) AS column4 
    from table_name 
    where table_name.column5 = 'message' 
    group by table_name.column2 

ungültig und Composite-Index auf den String aus Spalten beteiligt Spalten hinzufügen in denen und dann die Spalte in ausgewählten

zB:

create index my_index on table_name (column5, column2, column1, column3, column4) 
+0

In Erklärung der Abfrage finde ich jede Änderung in den Zeilen, die es scannt. Mit() und ohne() sind die gescannten Zeilen gleich. – user8153904

+0

Antwort Update mit einem Vorschlag .. Hoffnung ist nützlich .. – scaisEdge

+0

Composite-Index funktioniert auch nicht wie erwartet. Vor und nach dem Hinzufügen eines zusammengesetzten Index sind auch die Zeilen, die in EXPLAIN der Abfrage gescannt wurden, gleich – user8153904

Verwandte Themen