mysql - 选择更少的列会加快我的查询速度吗?
问题描述
我已经看到了几个比较 select * 以明确选择所有列的问题,但是选择的列少与多怎么办。
换句话说,就是:
SELECT id,firstname,lastname,lastlogin,email,phone
比以下速度快得可以忽略不计:
SELECT id,firstname,lastlogin
我意识到通过系统传输到应用程序的更多数据会有小的差异,但这是总数据/负载差异,而不是查询成本(我相信单元格中的较大数据无论如何都会产生相同的效果) - 我只是想优化我的查询,因为无论如何我都必须在某个时候加载所有数据......
当我的管理员用户登录时,我会将整个用户数据库加载到缓存中,但我可以预先只查询关键数据以节省一些执行时间,或者只是获取所有内容 - 如果结果大致相同。我知道更多的行等于更长的查询执行时间 - 但是我的查询中选择的更多值呢?
解决方案
在大多数情况下,唯一的区别是这些字段的数据稍大,获取它们的时间更长。
有两点需要考虑:
- 如果附加字段非常大,那么这可能是性能上的巨大差异。
- 如果存在涵盖您实际需要的列的索引,则该索引可用于查询。这可以加快数据库中的查询。
不过,一般来说,建议是将您想要的列返回给应用程序。如果有复杂的处理,您应该考虑在数据库而不是应用程序中进行。
推荐阅读
- java - 编辑 JavaFX 表中的数据
- swift5 - 类型“Notification.Name”(又名“NSNotification.Name”)没有成员“UIResponder”
- java - 如何使用spring boot jwt注销
- reactjs - 使用 webpack 从 index.html 正确导入文件
- mongodb - 无法在我的突变中使用快速会话
- scala - 从 Spark DataFrame 创建案例类对象序列
- c# - 在 Active Directory C# 中哪个是更好的 PrincipalContext 或 DirectoryEntry 用户创建
- c# - 如何更改 ObjectListView 中单个单元格的 BackColor/ForeColor
- python-3.x - 运行 train.py 对象检测脚本时没有名为“tensorflow”的模块
- python - TypeError : 'list' 对象不可调用;这是什么意思,我该如何解决?