【发布时间】:2013-01-03 17:57:20
【问题描述】:
涉及多个条件的 SQL 选择查询的时间复杂度是多少?
SELECT *
FROM products
WHERE price > 100
AND width > 100
AND rating > 100
例如,数据库引擎 (InnoDB) 如何处理这个带有价格、宽度和评级索引的查询?
引擎会先处理价格,然后按宽度和评级过滤结果吗?这意味着首先 O(log(n)+k) 其中 k 是结果数,n 是 products 表中的条目数, 然后是O(n),然后是O(n),n是最后一次过滤操作的结果数??
【问题讨论】:
-
太宽泛,没有特定的数据库(包括版本)。即便如此,这也取决于™。
-
@OMGPonies +1 商标。
-
@LibertPiouPiou 你不能说第一个是 O(log(n))。例如,如果所有行都有
price > 100,那么它必须是 O(n)。 -
最新版本的 InnoDB @OMG Ponies
-
@svick 我刚刚编辑了我的问题
标签: sql data-structures complexity-theory b-tree