2017-01-01 12 views
0

このクエリを短縮するにはどうすればよいですか?よりパフォーマンスの良いmysqlクエリを短絡する

SET sql_mode = ''; 
SELECT t1.`id_number`,t1.`parents_id_number`,t1.`student_first_name`, 
    SUM(t1.`degree_value`) AS `values`, 
    (SELECT `user_key` 
     FROM data_users.account_info t2 
     WHERE t1.id_number = t2.id_number AND t1.parents_id_number = t2.parents_id_number 
     LIMIT 1) AS `user_key`, 
    (SELECT `first_name` 
     FROM data_users.account_info t2 
     WHERE t1.id_number = t2.id_number AND t1.parents_id_number = t2.parents_id_number 
     LIMIT 1) AS `first_name`, 
    (SELECT `last_name` 
     FROM data_users.account_info t2 
     WHERE t1.id_number = t2.id_number AND t1.parents_id_number = t2.parents_id_number 
     LIMIT 1) AS `last_name`, 
    (SELECT `about_me` 
     FROM data_users.account_info t2 
     WHERE t1.id_number = t2.id_number AND t1.parents_id_number = t2.parents_id_number 
     LIMIT 1) AS `about_me` 
FROM `1479213957519` t1  
WHERE t1.year_half = '1' 
GROUP BY t1.`perfix` 
ORDER BY `Values` DESC 
LIMIT 6 
+1

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-veryを参照してください。 -simple-sql-query – Strawberry

+1

テーブルが1479213957519の場合、どこかで何かが真剣にどこかで間違っている可能性があります。 – Strawberry

+0

postsデータの自動生成テーブル –

答えて

3

相関サブクエリの代わりに結合を使用します。

SELECT t1.`id_number`,t1.`parents_id_number`,t1.`student_first_name`, 
     SUM(t1.`degree_value`) AS `values`, 
     t2.user_key, t2.first_name, t2.last_name, t2.about_me 
FROM `1479213957519` t1 
JOIN (SELECT * 
     FROM data_users.account_info 
     GROUP BY id_number, parents_id_number) t2 
    ON t1.id_number = t2.id_number AND t1.parents_id_number = t2.parents_id_number 
WHERE t1.year_half = '1' 
GROUP BY t1.`perfix` 
ORDER BY `Values` DESC 
LIMIT 6 

一意account_info内の行を識別しid_numberparents_id_number場合は、あなただけのテーブル自体に参加することができ、サブクエリを必要としません。

SELECT t1.`id_number`,t1.`parents_id_number`,t1.`student_first_name`, 
     SUM(t1.`degree_value`) AS `values`, 
     t2.user_key, t2.first_name, t2.last_name, t2.about_me 
FROM `1479213957519` t1 
JOIN data_users.account_info t2 
    ON t1.id_number = t2.id_number AND t1.parents_id_number = t2.parents_id_number 
WHERE t1.year_half = '1' 
GROUP BY t1.`perfix` 
ORDER BY `Values` DESC 
LIMIT 6 
+0

perfcto man ,,,第2のクエリは0.0014秒、最初の0.263を取った、と私は0.334を取った、私はより多くのSQLを学ぶ必要があります、ありがとう男 –

関連する問題