【发布时间】:2010-10-18 04:22:55
【问题描述】:
我对数据库很陌生,如果这是一个愚蠢的问题,请原谅我。
在现代数据库中,如果我使用索引来访问一行,我相信这将是 O(1) 复杂度。但是,如果我进行查询以选择另一列,它将是 O(1) 还是 O(n)?数据库是否必须遍历所有行,还是为每一列构建一个排序列表?
【问题讨论】:
-
我不是专家,但我注意到您没有说明您使用的是哪个数据库引擎。除非标准中有任何东西需要一定的时间复杂度,否则你不能依赖交叉实现。下面的答案似乎都假设它是以特定方式实现的(标准可能不需要)。它也反过来——除非标准禁止它(这将是愚蠢的)搜索其他列也可能更快。
标签: sql database language-agnostic big-o