SELECT *和SELECT显式列之间在运行时间上有区别吗?

时间:2019-01-23 22:51:04

标签: mysql sql query-performance

我有一个理论表,其中包含数百万行:

Person table
ID             int
first_name     varchar(50)
last_name      varchar(50)
date_inserted  datetime
middle_name    varchar(50)
nick_name      varchar(50)
favorite_color varchar(50)
birth_date     datetime
last_edited    datetime

我的查询如下:

SELECT * FROM PERSON WHERE last_edited > subdate(now(), 2)

返回数万行。

该查询与运行之间是否存在明显的运行时差异

SELECT 
    ID, 
    first_name, 
    last_name, 
    date_inserted, 
    middle_name, 
    nick_name, 
    favorite_color, 
    birth_date, 
    last_edited 
FROM Person
    WHERE last_edited > subdate(now(), 2);

1 个答案:

答案 0 :(得分:6)

不。运行时差异将基于返回的数据量。这两个查询是相同的,因为引用了相同的列。

通常,列是明确列出的,因此仅包含所需的列。这样既可以提高性能,又可以使代码在表结构更改方面更强大。