如果我只需要2/3列 SELECT * 除了在select查询中提供这些列之外,redshift和mysql中的i/o或内存的增加/减少是否会导致性能下降?基本上我想了解比较 select * 以及 select column 在红移和mysql哪个数据库哪个查询比较快,为什么??
SELECT *
select *
select column
fnvucqvd1#
因为红移是列式数据库,从表a中选择column1,clumn2特定列select查询将非常快,因为redshift只需要扫描/读取特定列。而select*会慢得多,因为redshift需要扫描和读取所有列。在mysql的情况下,选择col1,表a中的col2也可以(作为更少的内存/io),但是没有redshift好。我建议您阅读一些关于列式数据库的非常好的文档,比如redshift,它的分布键概念和编码概念,同时也会极大地影响性能。https://www.youtube.com/watch?v=iuqgzds-w7a
djmepvbi2#
对于mysql,可能有一个小的或大的区别:大:如果 * 有 TEXT 或者 BLOB 2/3中不存在的列。这是因为,在某些情况下,这样的字段需要额外的磁盘命中才能获取。否则就小了(更多的要解析,更多的要分配内存,等等)
*
TEXT
BLOB
2条答案
按热度按时间fnvucqvd1#
因为红移是列式数据库,
从表a中选择column1,clumn2
特定列select查询将非常快,因为redshift只需要扫描/读取特定列。
而select*会慢得多,因为redshift需要扫描和读取所有列。
在mysql的情况下,选择col1,表a中的col2也可以(作为更少的内存/io),但是没有redshift好。
我建议您阅读一些关于列式数据库的非常好的文档,比如redshift,它的分布键概念和编码概念,同时也会极大地影响性能。
https://www.youtube.com/watch?v=iuqgzds-w7a
djmepvbi2#
对于mysql,可能有一个小的或大的区别:
大:如果
*
有TEXT
或者BLOB
2/3中不存在的列。这是因为,在某些情况下,这样的字段需要额外的磁盘命中才能获取。否则就小了(更多的要解析,更多的要分配内存,等等)