English 中文(简体)
A. 使用ANSI OUTER JOIN和 OUTER in Informix时的询问计划差异
原标题:Difference in the query plan when using ANSI OUTER JOIN and OUTER in Informix

采用ANSI syntax的Informix查询结果有所不同:

SELECT .. 
  LEFT OUTER JOIN some_table ON (<condition>) 
  LEFT OUTER JOIN some_other_table (<condition_on_some_table>)

具体内容如下:

SELECT ... 
  OUTER (some_table, 
   OUTER(some_other_table)) 
WHERE <join_conditions>

感谢

最佳回答

是的,标准外同的异构体和反照相式的外在结合中存在差异,这必然意味着在盘问计划中存在差异。

总的说来,使用标准通知来制定任何新的或经过修改的法典——使反照相式的外在加入(未改动的)遗留法,甚至更新使用新加入书。

差别是什么? 公平问题——难以解释,更难以找到一个好的范例。 基本上,当根据外在就业表中的数值制定标准,摒弃这些行文时,采用“异构”的代号保留在主要表格(非排外表格)中的行文。

这两个问题的结果相同:

SELECT i.*, o.*
  FROM DominantTable AS i, OUTER OuterJoinedTable AS o
 WHERE i.pk_column = o.fk_column;

SELECT i.*, o.*
  FROM DominantTable AS i
  LEFT OUTER JOIN OuterJoinedTable AS o
    ON i.pk_column = o.fk_column;

这两个问题不一定产生相同的结果:

SELECT i.*, o.*
  FROM DominantTable AS i, OUTER OuterJoinedTable AS o
 WHERE i.pk_column = o.fk_column
   AND (o.alt_column IS NULL OR o.alt_column = 1);

SELECT i.*, o.*
  FROM DominantTable AS i
  LEFT OUTER JOIN OuterJoinedTable AS o
    ON i.pk_column = o.fk_column
 WHERE (o.alt_column IS NULL OR o.alt_column = 1);

情况不同:

DominantTable                              OuterJoinedTable
pk_column   other_column                   fk_column   alt_column
1           twenty                         1           3

The standard LEFT OUTER JOIN notation will produce the empty set as the result. The Informix-style join will produce the result:

pk_column   other_column   fk_column   alt_column
1           twenty         null        null

DominantTable的数据没有被拒绝,因为主要表格的过滤条件,因此由Informix保存。 标准结合了外部,然后过滤结果。

问题回答

Test and find out, or post the execution plans for both and we ll help digest them.

在目前的其他数据库发动机中,由于适当优化,它们将产生同样的执行计划。





相关问题
what is wrong with this mysql code

$db_user="root"; $db_host="localhost"; $db_password="root"; $db_name = "fayer"; $conn = mysqli_connect($db_host,$db_user,$db_password,$db_name) or die ("couldn t connect to server"); // perform query ...

Users asking for denormalized database

I am in the early stages of developing a database-driven system and the largest part of the system revolves around an inheritance type of relationship. There is a parent entity with about 10 columns ...

Easiest way to deal with sample data in Java web apps?

I m writing a Java web app in my free time to learn more about development. I m using the Stripes framework and eventually intend to use hibernate and MySQL For the moment, whilst creating the pages ...

join across databases with nhibernate

I am trying to join two tables that reside in two different databases. Every time, I try to join I get the following error: An association from the table xxx refers to an unmapped class. If the ...

How can I know if such value exists in database? (ADO.NET)

For example, I have a table, and there is a column named Tags . I want to know if value programming exists in this column. How can I do this in ADO.NET? I did this: OleDbCommand cmd = new ...

Convert date to string upon saving a doctrine record

I m trying to migrate one of my PHP projects to Doctrine. I ve never used it before so there are a few things I don t understand. In my current code, I have a class similar to this: class ...

热门标签