DISTINCT正在减慢我的查询,多列

问题描述 投票:-1回答:3

我的代码现在看起来像这样:

表格如下:

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'
sql
3个回答
1
投票

看来你正在进行交叉加入,ı不能指望其他方式。

假设您的第一个表有10个第二个表有5个第三个表有6个记录。

您的查询返回

10 x 6 x 5的结果。

使用正确的连接

寻找

İnner join
Left outer join
Right outer join

0
投票

尝试加入您的表格,例如

一个内部连接两个在one.id = two.id内部连接三个在two.id = three.id ..等等。


0
投票

你们都对JOINS有正确的帮助,INNER JOIN帮助我,这是我之前的例子,这段代码有效:

SELECT DISTINCT
           one.names,
           two.surnames,
    FROM one INNER JOIN
         two ON one.age=two.age
    where
         four.gender='male'
© www.soinside.com 2019 - 2024. All rights reserved.