1
是否有更有效的方法來查詢一個表(或表的集合)爲所有可能的幾列的組合,我目前正在運行group by,然後是max,但是這似乎並不是最有效的方式。SQL查找每個組合的示例的高效方法
SQL小提琴對於下面的例子: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,即使有相同的年齡/名稱
但是目前這個龐大的數據庫約需十分鐘後返回結果(注意它實際上是幾個表的連接)
是否有更有效的方法來返回相同的結果?我想象的SELECT * WHERE name = %, age = % and city = % LIMIT 1
大規模收集或類似的東西
不幸的是我不能使用不同因爲#1的原因,我需要這些行的ID,否則這些信息對我來說並不真正有用! – 2013-02-28 10:39:02