我的代码现在看起来像这样:
表格如下:
names surnames age gender
adam lokis 12 m
adam lokis 12 m
mikel miles 22 m
sara astin 34 f
它的样本,我不知道表结束的方式,因为数据库太大了
SELECT DISTINCT
one.names,
two.surnames,
three.age,
four.gender
FROM one,two,three,four
WHERE
four.gender='male'
group by three.age
SQL开发人员正在分析那些数百万行的数小时。我曾尝试在/*+ no_use_hash_aggregation*/
之前使用DISTINCT
,但仍然不知道如何让它更快。也许好的方法是在表之间使用INNER JOIN
?
编辑:GOT IT!我试过一个只有两张桌子的例子
SELECT DISTINCT
one.names,
two.surnames,
FROM one INNER JOIN
two ON one.age=two.age
where
four.gender='male'
看来你正在进行交叉加入,ı不能指望其他方式。
假设您的第一个表有10个第二个表有5个第三个表有6个记录。
您的查询返回
10 x 6 x 5的结果。
使用正确的连接
寻找
İnner join
Left outer join
Right outer join
尝试加入您的表格,例如
一个内部连接两个在one.id = two.id内部连接三个在two.id = three.id ..等等。
你们都对JOINS有正确的帮助,INNER JOIN帮助我,这是我之前的例子,这段代码有效:
SELECT DISTINCT
one.names,
two.surnames,
FROM one INNER JOIN
two ON one.age=two.age
where
four.gender='male'