通过减少列

时间:2015-07-17 11:11:16

标签: sql database performance cartesian-product

我有一个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;

或者列数无关紧要?

2 个答案:

答案 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