【发布时间】:2014-02-19 21:20:52
【问题描述】:
我有几个关于自我加入的问题,有人可以帮忙回答吗?
-
是否有严格的自加入格式?有sample这样的:
SELECT a.column_name, b.column_name... FROM table1 a, table1 b WHERE a.common_field = b.common_field;
但是有这样的示例:
SELECT a.ID, b.NAME, a.SALARY
FROM CUSTOMERS a, CUSTOMERS b
WHERE a.SALARY < b.SALARY;
我想知道连接 (a.common_field = b.common_field) 是否必要?因为这两种格式都是自加入的。
如何优化自联接?它们会被视为 INNER JOIN 还是 CROSS JOIN?特别是对于第二种格式,它是 SELF CROSS JOIN 吗?在 SQLite 和 PostgreSQL 中,它们的处理方式是否相同?
我的问题是我想从一堆类似图形的数据中提取一个结构,而我的查询就像
SELECT A.colum, B.colum,....N.colum
FROM
table1 as A, table1 as B, table1 as C .... table2 as M, table2 as N ....
where
A.colum1<B.colum1 and
C.colum1=D.colum1 and
....
在查询中,table1,table2... 是单列表,它们是最终结构的组成部分。我的问题在这种自加入格式中是最好的吗?我发现它在 PostgreSQL 中非常慢,但在 SQLite 中却很快,这让我感到困惑。
【问题讨论】:
标签: sql postgresql sqlite query-optimization