如果数据库最多可以支持数百万条记录,那么这些数据是如何组织的?这样可以在合理的时间内执行查询。数据库如何高效?
数据库如何高效?
回答
我真的很喜欢This说明(包括图形)
这是artcicle结论:
结论
Index example http://mattfleming.com/files/images/example.gif
创建B树索引以减少 查找所需的I/O量并加载一组数据。高度选择性的指数使用最少量的I/O ,选择性差的指数 并不比表扫描好得多。
完整的回答是许多书籍和论文;-)话题
但是,基本的答案是,所有现代RDBMS有几个特点:一是 ,他们有一个查询优化器是非常有效。这找到了回答所提供查询的好(不总是最好的)路径。当然,这实际上可以做更多的事情来帮助复杂的问题而不是简单的问题。
其次,它们以易于搜索的结构化格式存储数据。没有聚集索引的数据称为堆,这对搜索通常不太有效,但它仍然是结构化数据。数据通常会有一个聚集索引,从逻辑上对数据进行排序。 (有些人认为它在物理上对数据进行了排序,这里有一些事实,但并不完全正确,Itzik Ben Gan在其他人的文章中有一篇很好的文章揭穿了这种信念)。
除了聚簇索引,通常使用非聚簇索引。这些就像书中的索引,可以帮助告诉查询优化器在哪里查找所请求的数据,或者在某些特定情况下索引本身可能具有所需的所有数据。
这当然是一个严重和可怕的过分简单化。如果你想深入理解,准备在数据库理论中追求博士学位。对于一般级别的理解,您可以查看有关数据库内部的书籍。特别是对于SQL Server,SQL Server 2008内部包含有关此主题的大量信息。
我有兴趣阅读第二个(第三个?)段落中引用的文章 – RCIX 2010-04-30 00:03:33
看看SQL Server Magazine InstantDoc ID#92886 – TimothyAWiseman 2010-04-30 17:26:25
断开链接,括号错位 – kibibu 2010-04-29 23:47:33