是否有一种更有效的方法来查询表(或表的集合)以查找几列的所有可能组合,我目前正在运行 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 有不同的城市,即使年龄/姓名相同
然而,目前在这个庞大的数据库上,返回结果大约需要十分钟(注意它实际上是几个表的连接)
有没有更有效的方法来返回相同的结果?我在想象大量收集SELECT * WHERE name = %, age = % and city = % LIMIT 1
或类似的东西