数据库如何有效?

时间:2010-04-29 23:42:26

标签: database data-structures performance

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

3 个答案:

答案 0 :(得分:9)

答案 1 :(得分:8)

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

但是,基本答案是所有现代RDBMS都有一些功能: 首先,他们有一个高效的查询优化器。这找到了一个很好的(并不总是最好的)路径来回答提供的查询。当然,这实际上可以帮助复杂的问题而不是简单的问题。

其次,它们以易于搜索的结构化格式存储数据。没有聚簇索引的数据称为堆,这通常对搜索不太有效,但它仍然是结构化数据。数据通常在其上具有聚集索引,逻辑上对数据进行排序。 (有些人认为它在物理上对数据进行了排序。这有一定的道理,但并非绝对正确.Itzik Ben Gan amoungst其他人有一篇很好的文章揭穿了这一信念。)

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

这当然是一种严重而可怕的过度简化。如果您想深入了解,请准备好在数据库理论中追求PHD。要获得一般性的理解,您可以查看有关数据库内部的书籍。特别是对于SQL Server,SQL Server 2008 Internals有很多关于此主题的信息。

答案 2 :(得分:2)

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

这是artcicle的结论:

  

<强>结论

Index example http://mattfleming.com/files/images/example.gif

  

创建B树索引以减少   查找和所需的I / O量   加载一组数据。高度选择性   index使用最少量的I / O.   必要的,选择性差的指数   并不比桌面扫描好多了。