database - 为什么基于列的数据库查询速度更快?

标签 database

我正在研究用于新数据库的方法,该数据库将用于我们的新应用程序。数据量不会像 1 亿条记录那样庞大,但在归档之前将有大约 1000 万条记录。对这么多数据使用基于列的方法会比基于行的数据库更有用吗?为什么基于列的数据库查询速度更快?

最佳答案

本质上,面向行和面向列的数据库之间的主要区别在于它们用于序列化数据的模型。面向行的数据库将每一行中的数据存储为连续的 block 。面向列的数据库将每个 的数据存储在连续的 block 中。此外,这些 block 通常经过压缩和排序。

因此,性能差异实际上取决于查询类型。使用较少 I/O 寻道的查询将执行得更快,并且从连续 block 读取是一次寻道。因此,如果您的查询依赖于对一列(或多列)的聚合或排序,那么列存储可以执行得更快,因为在最佳条件下读取列中的所有值可以是一次查找。如果您的查询是基于索引列(如客户 ID)在巨大的客户表中搜索少量客户记录,那么行存储数据库实际上可能更快。

关于database - 为什么基于列的数据库查询速度更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50474113/

相关文章:

java - 无法在 Derby 中删除架构

c# - 使用 SQL 或 C# 计算 - 多列和多行

PHP 数据库在具有不同 anchor 标记的相同字段中显示

c# - 从数据库中读取枚举

mysql - 如何db :setup mysql2 database?

mysql - SQL 密集索引和稀疏索引

mysql - 将所有数据库 - 表,存储过程复制到一个文件中并保存在闪存盘上

mysql - 如何通过调整现有数据来填充 mysql 数据库

sql - 将数据插入数据库[Delphi]

java - Java Callable Statement 获取 CURSOR 时出现异常如何解决?