【问题标题】:Complexity of adding n entries to a database向数据库添加 n 个条目的复杂性
【发布时间】:2009-09-17 21:59:22
【问题描述】:

在 MySQL 中将 n 个条目添加到具有 m 个条目和 i 个索引的数据库中然后提交的大 O 表示法有什么复杂性?

【问题讨论】:

    标签: sql mysql database


    【解决方案1】:

    插入没有索引的MyISAM 表需要O(n)(线性)时间。

    插入InnoDB 表和任何索引需要log(m) * O(n)(线性时间取决于现有记录的数量)时间(假设m >> n),因为InnoDB 表和索引是B-Trees

    总时间是这些值的总和。

    【讨论】:

      【解决方案2】:

      这取决于表中的索引数量以及其他因素。

      数据库中的每个单独操作都有不同的复杂性。例如,B-Tree 搜索操作的时间复杂度为 O(log n),而实际搜索的时间取决于是否发生表扫描,即 O(n)。

      我想你可以建立一个对你所描述的内容来说相当复杂的方程。您必须单独考虑每个操作,而且我不确定这是否可以以确定性方式完成,因为数据库系统倾向于以临时方式决定它们将如何使用查询计划执行事物等。

      【讨论】:

      • 我在问题中添加了表格有 i 个索引的事实。
      猜你喜欢
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2019-10-11
      • 2021-10-28
      相关资源
      最近更新 更多