2017-11-04 13 views
0

サブクエリを含むクエリを作成し、インデックスを作成する必要があります。だから、私は年に最高のビルドアップの速度を持っているチーム名を検索するためのクエリを思い付いた:MySql Workbenchでのインデックス作成

SELECT CONCAT(team_long_name, ',', team_short_name) AS TeamName, 
     EXTRACT(YEAR FROM date) AS Year, 
     buildUpPlaySpeed 
FROM team JOIN 
    team_attributes 
    ON team.team_api_id = team_attributes.team_api_id 
WHERE 
    (buildUpPlaySpeed,team_attributes.date) in (SELECT 
      MAX(buildUpPlaySpeed),team_attributes.date 
     FROM team_attributes 
     WHERE team_attributes.date = team_attributes.date 
     group by team_attributes.date) 
ORDER BY date desc; 

インデックスは、日付、team_api_id、buildUpPlaySpeed列上に存在しています。

さらにコストを削減する方法についてのご意見はありますか?

+0

ロンを試してみてくださいあなたはStackOverflowのに非常に新しいものかもしれないようです。質問に回答した場合は、その答えが「はい」であることを示すと予想されます。 [ヘルプ/受諾](https://stackoverflow.com/help/someone-answers) –

答えて

0

はい。それは、SQLで使われているので、正気のために列「日付」という名前を付けないでください、

SELECT CONCAT (
    team_long_name 
    ,',' 
    ,team_short_name 
    ) AS TeamName 
    ,EXTRACT(YEAR FROM [DATE]) AS Year 
    ,buildUpPlaySpeed 
FROM team 
INNER JOIN team_attributes ON team.team_api_id = team_attributes.team_api_id 
INNER JOIN (
    SELECT MAX(buildUpPlaySpeed) maxbuildup 
     ,team_attributes.[DATE] 
    FROM team_attributes 
    WHERE team_attributes.[DATE] = team_attributes.DATE 
    GROUP BY team_attributes.[DATE] 
    ) x ON buildUpPlaySpeed = x.maxbuildup 
    AND team_attributes.DATE = x.[DATE] 
ORDER BY [DATE] DESC 
; 

と:参加と相関サブクエリを交換してください。とても混乱するような。

+0

ありがとうございます[**クリックしてください**](https://ibb.co/ikqyO6) ..それは働いた:) – Ron

+0

素晴らしい。あなたはこれを答えとして受け入れますか? –

+0

あなたはまだこの回答について質問がありますか? [help/accepting](https://stackoverflow.com/help/someone-answers)の詳細については、「[** Click The Tick **](https://ibb.co/ikqyO6)」という回答を受け入れる* ps:あなたが答えを受け入れると、2つの評判ポイントが得られます** –

0

は、このも

SELECT CONCAT(team_long_name,',',team_short_name) AS TeamName,EXTRACT(YEAR FROM DATE) AS Year,buildUpPlaySpeed 
FROM team 
INNER JOIN team_attributes ON team.team_api_id = team_attributes.team_api_id 
INNER JOIN (SELECT MAX(buildUpPlaySpeed) maxbuildup,team_attributes.DATE FROM team_attributes 
    WHERE team_attributes.DATE = team_attributes.DATE 
    GROUP BY team_attributes.DATE ) t1 
where buildUpPlaySpeed = t1.maxbuildup AND team_attributes.DATE = t1.DATE ORDER BY DATE DESC; 
関連する問題