在红移和MySql中选择*vs选择列
如果我只需要2/3列,我查询在红移和MySql中选择*vs选择列,mysql,performance,bigdata,amazon-redshift,rdbms,Mysql,Performance,Bigdata,Amazon Redshift,Rdbms,如果我只需要2/3列,我查询SELECT*,而不是在selectquery中提供这些列,那么红移和MySql中的I/O或内存的增加/减少是否会导致性能下降 基本上我想了解比较Redshift和MySql中的select*和select column,哪个数据库的查询速度更快,为什么???,因为Redshift是柱状数据库 从表a中选择第1列,第2列,其中包含一些标准 特定列选择查询将是超快速的,因为红移只需要扫描/读取特定列 而Select*会慢得多,因为红移需要扫描和读取所有列 对于MySql
SELECT*
,而不是在selectquery中提供这些列,那么红移和MySql中的I/O或内存的增加/减少是否会导致性能下降
基本上我想了解比较Redshift和MySql中的
select*
和select column
,哪个数据库的查询速度更快,为什么???,因为Redshift是柱状数据库
从表a中选择第1列,第2列,其中包含一些标准
特定列选择查询将是超快速的,因为红移只需要扫描/读取特定列
而Select*会慢得多,因为红移需要扫描和读取所有列
对于MySql,也可以选择col1,表a中的col2可以(作为更少的内存/IO),但不如红移
我建议您阅读一些关于列式数据库的非常好的文档,比如Redshift,它的分发密钥概念和编码概念,同时也会对性能产生很大的影响
对于MySQL,可能有一个小的或大的差异:
- 大:如果
有*
或文本
列,但在2/3中不存在。这是因为,在某些情况下,这样的字段需要额外的磁盘命中才能获取BLOB
- 否则就小了。(更多的要解析,更多的要分配内存等)
select*
会导致发送的数据比只在少数列上选择要多得多,那么从网络带宽的角度来看,前者的性能会更低@TimBiegeleisen@RayToal感谢您的回复,我知道SELECT*总是很昂贵,因为它需要更多的I/O、内存、,处理更多的数据等,但基本上我想了解列数据库和行数据库中查询执行的差异。你可能没有理解我评论的要点。我试图告诉您,两个查询的执行策略可能是相同的。但是,如果您想要更多的列,那么肯定会有性能差异,特别是如果额外的列特别大的话。始终只选择您真正想要返回的列,即使这些列都是。不要使用邪恶选择*。