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

时间:2018-12-13 09:07:57

标签: sql

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

表格如下:

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

编辑:知道了! 我尝试了一个仅包含两个表的示例

SELECT DISTINCT
       one.names,
       two.surnames,
FROM one INNER JOIN
     two ON one.age=two.age
where
     four.gender='male'

3 个答案:

答案 0 :(得分:1)

似乎您正在进行交叉联接,ı不能指望其他情况。

假设您的第一张桌子有10张 第二张桌子有5 第三表有6条记录。

您的查询返回

10 x 6 x 5个结果。

使用适当的联接

寻找

İnner join
Left outer join
Right outer join

答案 1 :(得分:0)

尝试加入表格,例如

一个内部联接在on.id = two.id上两个 内部连接two.id = three.id ..上的三个,依此类推。

答案 2 :(得分:0)

您在这里对JOINS都拥有权利,INNER JOIN帮助我,在我之前的示例中,此代码有效:

SELECT DISTINCT
           one.names,
           two.surnames,
    FROM one INNER JOIN
         two ON one.age=two.age
    where
         four.gender='male'