我想基于子查询结果返回一些结果,我想知道什么会更快 - 子查询结果是不同的还是在子句中有重复?
实施例
-- 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);
}
这个例子可能没有意义,但它提出了我的观点。
答案 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)
上的索引。