いくつかの列のすべての可能な組み合わせについてテーブル (またはテーブルのコレクション) をクエリするより効率的な方法はありますか?現在、group by を実行してから max を実行していますが、これは最も効率的な方法ではないようです。
以下の例の SQL Fiddle: http://sqlfiddle.com/#!2/25f8b/3
例の表
ID | Name | Age | City | Color
--------------------------------
1 | Dave | 10 | London | Red
2 | Dave | 11 | London | Purple
3 | Dave | 10 | Paris | Orange
4 | Jim | 10 | London | Red
5 | Jim | 10 | London | Green
6 | Jim | 11 | London | Lazer
etc... (around 500,000 rows)
現在実行中:
SELECT max(ID), Name, Age, City, Color
from People
group by Name, Age, City
生産するには:
MAX(ID) NAME AGE CITY COLOR
1 Dave 10 London Red
3 Dave 10 Paris Orange
2 Dave 11 London Purple
5 Jim 10 London Red
6 Jim 11 London Lazer
- 注 4 は 5 の正確な複製であるため、欠落しています。
- 3は同じ年齢・名前でも1とは市区町村が違うので含む
ただし、現在、この大規模なデータベースでは、結果を返すのに約 10 分かかります (実際にはいくつかのテーブルの結合であることに注意してください)。
同じ結果を返すより効率的な方法はありますか? SELECT * WHERE name = %, age = % and city = % LIMIT 1
の大量コレクションか似たようなものを想像していた