'其中'与重复或选择不同的' - 表现

时间:2017-07-30 12:10:15

标签: sql oracle oracle-sqldeveloper


我想基于子查询结果返回一些结果,我想知道什么会更快 - 子查询结果是不同的还是在子句中有重复?
实施例

-- subquery
select /*distinct?*/ my_column from some_table_2;

如果

  | MY_COLUMN
1 | 25
2 | 25
3 | 54
...

这将返回如下内容:

for (var i = 0; i < ServerArray.length; i++) {
    var CurrentServer = ServerArray[i].outerText;

    (function(cs) {
      $.ajax({
        type: 'GET',
        data: { 'Server': cs },
        url: 'http://localhost/check',
        success: function(data) {
            if (data == '200') {
                console.log(cs + 'inside ajax');
                $("td:contains('" + cs + "')").next().text("OK");
            } else {
                $("td:contains('" + cs + "')").next().text("Not OK");
            }
        }
      });
    })(CurrentServer);
}

这个例子可能没有意义,但它提出了我的观点。

1 个答案:

答案 0 :(得分:3)

distinct放入in的子查询中没有任何好处。 in执行所谓的&#34;半连接&#34;。这将在第一个匹配的行停止。

Oracle可能会忽略select distinct。其他数据库实际上可能会实现它。

如果您关心性能,请尝试以下两个版本:

select t.* 
from some_table t
where my_column in (select my_column from some_table_2)

select t.*
from some_table t
where exists (select 1 from some_table_2 t2 where t2.my_column = t.my_column);

此版本可以利用some_table_2(my_column)上的索引。