mysql - SELECT * 和 SELECT 显式列之间是否存在运行时差异?
问题描述
我有一个包含数百万行的理论表:
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);
解决方案
不会。运行时差异将基于返回的数据量。这对于两个查询是相同的,因为引用了相同的列。
通常,列是明确列出的,因此只包含所需的列。这可以提高性能,并使代码在表结构更改方面更加健壮。
推荐阅读
- .net - 即使等待方法调用(从一个 API 到另一个 API),任务取消异常
- reactjs - 如何在反应本机应用程序中使用 xState 路由导航
- java - 从 Firestore 获取空数组列表
- python - 如何使用 Python 从属性文件中删除最后出现的“=”符号
- python - 如何创建一个包含大括号内的任何字符、整数和符号的正则表达式?
- java - Android Firebase 提醒通知未显示
- c# - C# - 用于 DLL 的 Log4Net 在客户端 PC 中不起作用
- assembly - cmpxchg 是否会在失败时写入目标缓存行?如果不是,它是否比自旋锁的 xchg 更好?
- javascript - 修改JS中的初始对象值
- pytorch - 用 CPU 加载 pickle 保存的 GPU 张量?