次のようなSQLステートメントがあります。
select id, CIDs, COLOR, XT, MP, Name, concat(PIDs,",",GROUP_CONCAT(DISTINCT id)) as PIDs, IFNULL(Name,id) as unqName from (
select id, CIDs, COLOR, XT, MP, Name, concat(PIDs,",",GROUP_CONCAT(DISTINCT id)) as PIDs, IFNULL(MP,id) as unqMP from (
select id, CIDs, COLOR, XT, MP, Name, concat(PIDs,",",GROUP_CONCAT(DISTINCT id)) as PIDs, IFNULL(XT,id) as unqXT from (
select id, CIDs, COLOR, XT, MP, Name, GROUP_CONCAT(DISTINCT id) as PIDs, IFNULL(COLOR,id) as unqCOLOR from Performance group by unqCOLOR
) m group by unqXT
) x group by unqMP
) y group by unqName
パフォーマンスの詳細をトリミングして PID を取得する必要がありますが、うまくいきます。しかし、PID が重複しています (4 回)。パフォーマンスの最適化はありますか? SQL ステートメントをより高速に実行し、PID を一意にするには?
mysql> select count(*) from Performance;
+----------+
| count(*) |
+----------+
| 243484 |
+----------+
1 row in set (0.00 sec)
SQL ステートメントを実行すると、次の処理が行われます。
Query OK, 137771 rows affected (43.54 sec)
SQLFiddle リンク: