我有一个SQL查询,它在大型表上使用笛卡尔积。但是,我只需要其中一个表中的一列。如果我在使用笛卡尔积之前只选择了一列,那么它实际上会表现得更好吗?
所以,换句话说,是这样的:
SELECT A.Id, B.Id
FROM (SELECT Id FROM Table1) AS A , Table2 AS B;
比这更快,因为Table1的列数多于Id?:
SELECT A.Id, B.Id
FROM Table1 AS A , Table2 AS B;
或者列数无关紧要?
答案 0 :(得分:0)
在大多数数据库中,这两个表单具有相同的执行计划。
第一个可能会在实现子查询的数据库(例如MySQL)上变得更糟。
对于两个表上的索引,第二个应该更好。 。 。 table1(id)
和table2(id)
。索引将用于获取值而不是基础数据。
答案 1 :(得分:0)
亲自尝试一下!但一般来说,使用子查询减少行数将有助于提高性能。但是,您的查询应以不同方式编写:
select a.id aid, b.id bid from
(Select id from table1 where id=<specific_id>) a, table2 b