动态临时索引创建

Ale*_*lex 5 performance index

在我的本科数据库课程中,我的教授提到某些 DBMS 软件非常先进,以至于它可以检测到长时间运行的查询何时会从索引中受益。然后,DBMS 可以在查询期间创建该索引以提高性能。

但是,我认为这是不可能的,一些最初的谷歌搜索似乎同意我的看法。有谁知道实际实施此策略的 DBMS?

Gai*_*ius 6

几乎没有“那么先进”;这是一个很常见的功能。你的教授落后于时代!:-) SQLite 是最简单的数据库之一,但请参阅本页第 11 节。

由于构建自动索引的成本是 O(NlogN)(其中 N 是表中的条目数)而进行全表扫描的成本仅为 O(N),因此只有在 SQLite 时才会创建自动索引期望在 SQL 语句的过程中查找将运行超过 logN 次


Unr*_*son 5

尝试改进您的 google foo,以下是一些结果

以下是一些术语:

  • 了解何时最好使用索引是查询规划器/优化器的工作,这意味着它应该了解什至构建临时索引更好;看这里
  • 尝试不仅检查“临时索引”,还检查“哈希表”(好吧,取决于您对临时索引的定义);在这里看到一些细节