У меня есть несколько вопросов о присоединении к себе, может ли кто-нибудь ответить на него?Что такое sef-join?
Существует ли строгий формат самостоятельного присоединения? Есть 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? особенно, для второго формата, является ли это САМОСТОЯТЕЛЬНЫМ ПРИСОЕДИНЕНИЕМ? В 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, который меня смущает.
Не нужно использовать одинаковый столбец для обеих таблиц, зависит от ситуации. См. Мой пример. – jean
Для моего второго формата, это САМОКРОСС-ПРИСОЕДИНЯЙТЕСЬ? как будто это так, когда есть много таблиц, вычисление станет очень сложным. У меня аналогичный пример: он работает быстро в SQLite, но очень медленный в PostgreSQL. – user3329081
@ user3329081 Вы можете так подумать, для меня «CROSS JOIN» подразумевает неограниченное отношение, полное декартово произведение, в этом примере вы не присоединяетесь к каждой записи к каждой другой записи, но вы получаете частичную кросс- продукт. –