SELECT * 和 SELECT 显式列之间是否存在运行时差异?
Is there a runtime difference between SELECT * and SELECT explicit columns?
我有一个理论上的 table 数百万行:
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)
其中returns几万行。
该查询与 运行
之间是否存在明显的运行时差异
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);
没有。 运行 时差将基于返回的数据量。这对于两个查询是相同的,因为引用了相同的列。
通常,列会被明确列出,因此只会包含所需的列。这可以提高性能,并使代码在 table 结构的变化方面更加健壮。
我有一个理论上的 table 数百万行:
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)
其中returns几万行。
该查询与 运行
之间是否存在明显的运行时差异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);
没有。 运行 时差将基于返回的数据量。这对于两个查询是相同的,因为引用了相同的列。
通常,列会被明确列出,因此只会包含所需的列。这可以提高性能,并使代码在 table 结构的变化方面更加健壮。