从理论上讲,列存储如何获取多个列

时间:2016-02-03 19:33:58

标签: database database-design

给出下表

name:  my_name: 01, your_name: 02
id: my_id: 01: your_id: 02


# Here is an equivalent row store sql query
SELECT p.id FROM personal_info as p WHERE p.name = my_name

查找是什么样的?它是否对名称进行O(1)检查,然后在id中扫描整个列?如果是这样,扫描是O(n)扫描还是O(logn)扫描?性能与行存储扫描有何不同?

1 个答案:

答案 0 :(得分:1)

扫描的复杂性取决于您的数据库索引类型。

如果索引是哈希类型,则扫描为O(1);
如果索引是B树(或B +,B-epsilon),则扫描复杂度为O(log N)。

如果此列上没有索引,则扫描必须执行另一行,复杂度为O(N)。

考虑到随机磁盘访问速度慢,哈希索引是最佳选择。