Database 数据库的效率如何?

Database 数据库的效率如何?,database,data-structures,performance,Database,Data Structures,Performance,如果数据库可以支持多达数百万条记录,那么如何组织所有这些数据,以便在合理的时间内执行查询?索引 我非常喜欢解释(包括图形;) 这是艺术的结论: 结论 (来源:) 创建B树索引以减少 查找和删除所需的I/O量 加载一组数据。高选择性的 索引使用的I/O量最少 必要的、选择性差的指数 没有比表格扫描好多少 一个完整的答案是众多书籍和论文的主题;-) 然而,基本的答案是,所有现代RDBMS都有两个特性: 首先,他们有一个高效的查询优化器。这将找到一个好的(并不总是最好的)路径来回答提供的查询。当然,

如果数据库可以支持多达数百万条记录,那么如何组织所有这些数据,以便在合理的时间内执行查询?

索引

我非常喜欢解释(包括图形;)

这是艺术的结论:

结论


(来源:)

创建B树索引以减少 查找和删除所需的I/O量 加载一组数据。高选择性的 索引使用的I/O量最少 必要的、选择性差的指数 没有比表格扫描好多少


一个完整的答案是众多书籍和论文的主题;-)

然而,基本的答案是,所有现代RDBMS都有两个特性: 首先,他们有一个高效的查询优化器。这将找到一个好的(并不总是最好的)路径来回答提供的查询。当然,这实际上比简单的问题更能帮助解决复杂的问题

其次,它们以易于搜索的结构化格式存储数据。没有聚集索引的数据称为堆,通常搜索效率较低,但它仍然是结构化数据。数据上通常会有一个聚集索引,对数据进行逻辑排序。(有些人认为,数据是按物理顺序排列的。这是有道理的,但并非绝对正确。伊兹克·本·甘·阿蒙斯特(Itzik Ben Gan amoungst)等人发表了一篇极好的文章,驳斥了这一观点)

除聚集索引外,通常使用非聚集索引。它们就像书中的索引,可以帮助告诉查询优化器在哪里查找请求的数据,或者在某些特定情况下,索引本身可能包含所需的所有数据


这当然是一种粗俗而可怕的过分简化。如果你想深入了解,请准备攻读数据库理论博士学位。为了获得一般性的理解,您可以看一看关于数据库内部结构的书籍。特别是对于SQL Server,SQL Server 2008内部有很多关于此主题的信息。

断开的链接,括号放错了位置。我有兴趣阅读您在第二(第三)段中引用的文章查看SQL Server杂志InstantDoc ID#92886