1.1 数据结构

来源:互联网 发布:excel中vba编程 编辑:程序博客网 时间:2024/06/15 22:18

sql型数据库通常使用B+树存储index(红黑树?存疑),相比B树,B+树所有数据节点都在最底层,并且每个节点都会存储下一个节点的指针,在between/>/<操作的时候可以获得很好的时间复杂度,优于B树(存疑)。

由于每次插入/删除操作都需要同时修改index,所以不合适的index反而会拖慢数据库性能。(例如插入n个数据,在没有索引时时间复杂度是O(n),有索引时时间复杂度是O(n*log(n)),耗时时间与索引数量近似成正比。)在查询操作远多于增删改操作时,index会获得较好的性能。


hash表可以丧心病狂地减少时间复杂度,当然也会丧心病狂地增加空间复杂度……文中没有详细说明hash表的使用场景,目测在表连接的时候hash表会获得较高的性能。

  CREATE TABLE t1(a,b);  CREATE TABLE t2(c,d);  -- Insert many rows into both t1 and t2  SELECT * FROM t1, t2 WHERE a=c;

(from https://www.sqlite.org/optoverview.html)

对a和c使用hash表建立索引效率会提高很多(时间复杂度O(n))。然而根据sqlite官网上的介绍,这种情况下sqlite使用的是O(n*log(n))的索引,想不通。


原创粉丝点击