2011-04-06 60 views
2

为什么sql查询执行得更快,如果我使用SELECT语句中的实际列名而不是SELECT *SQL SELECT子句调整

+1

你是说'SELECT *'与'SELECT表中的所有列的SELECT列表?如果是的话,应该差不多是零。如果你的意思是'SELECT *'与只包含表中某些列的SELECT列表,那么很容易解释。 – 2011-04-06 12:08:27

+2

你问这个问题是因为你看到了你正在使用的系统中的差异,或者你听说过你不应该使用'SELECT *'? – Tony 2011-04-06 12:11:14

+0

你使用的是什么数据库产品? – 2011-04-06 13:02:35

回答

2

因为根据查询,它必须弄清楚是否有唯一的名称,它们是什么,等等。如果你指定它,它的全部都是为它做的。

+0

但它仍然需要验证指定的列是否存在等。 – 2011-04-06 12:11:14

+0

哦,它确实如此,但是如果你已经在tablea.id,tableb.something ..和theres id这两个中说过了,它不需要尝试和锻炼哪个id它使用或者如果id不明确,虽然我认为时间差,但差异应该很小。我很想看到一些时间显示超过几毫秒的时间。 – BugFinder 2011-04-06 13:46:05

4

一个明显的差异似乎很奇怪......因为我认为它是一个非常微小的差异,并且很想去测试它。

在声明中使用Select *的任何差异都可能是由于它花费额外的时间来找出所有列名是什么。

+1

+1我不相信这个问题的前提。 – 2011-04-06 12:07:23

1

一般来说,你讲的越多,计算得越少。这对许多系统都是一样的。