クエリに問題があり、実行に 17 秒かかりました (350k 行)。
SELECT idgps_unit, MAX(dt)
FROM gps_unit_location
GROUP BY 1
説明
1 SIMPLE gps_unit_location index fk_gps2 5 422633
遊んだ後、1秒かかるこのソリューションを思いつきました:
Select idgps_unit, MAX(dt) from (
SELECT idgps_unit, dt
FROM gps_unit_location
) d1
Group by 1
説明:
1 PRIMARY <derived2> ALL 423344 Using temporary; Using filesort
2 DERIVED gps_unit_location index gps_unit_location_dt_gpsid 10 422617 Using index
そして今、私は混乱しています.なぜクエリ#2が速いのに、クエリ#1は同じクエリのようで、より効率的に書かれているようです.
Index1:DT、Index2:idgps_unit、Index3:idgps_unit+DT
実行時間は一貫しています。クエリ #1 は常に 17 ~ 19 秒かかります。#1 <1秒の間。
Godaddy VPS Windows Server 2008 エコノミーを使用しています
テーブルの例:
id | idgps_unit | dt | location
1 | 1 | 2012-01-01 | 1
2 | 1 | 2012-01-02 | 2
3 | 2 | 2012-01-03 | 3
4 | 2 | 2012-01-04 | 4
5 | 3 | 2012-01-05 | 5