2017-07-03 22 views
-1

使用MAX功能時提高性能我有以下情況的看法:如何在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 

這一觀點的選擇造成一定的性能影響。

桌子上的指數有: COLUMN1是PrimaryKey的 COLUMN2被索引 column5被索引

任何人都可以讓我知道如何從上述的觀點更好的性能。

+0

參見[我爲什麼要爲了什麼在我看來,提供MCVE是一個非常簡單的SQL查詢(http://meta.stackoverflow.com/questions/333952/why-should-i-提供-AN-MCVE-F或者,什麼,似乎對我將要-A-極簡單的SQL查詢)。另外,有關性能的問題總是需要解釋有問題的查詢。 – Strawberry

回答

0

你應該避免unseful()左右,其中condtion這些都無效的索引使用

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 

,並在參與串從列列添加複合索引,其中,然後在選擇

列例如:

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

在解釋查詢時,我發現查找它正在掃描的行中的任何更改。使用()和without()掃描的行是相同的。 – user8153904

+0

答案更新與建議..希望是有用的.. – scaisEdge

+0

綜合指數也沒有按預期工作。在添加複合索引之前和之後,在解釋查詢時掃描的行也是相同的 – user8153904