【发布时间】:2009-09-17 21:59:22
【问题描述】:
在 MySQL 中将 n 个条目添加到具有 m 个条目和 i 个索引的数据库中然后提交的大 O 表示法有什么复杂性?
【问题讨论】:
在 MySQL 中将 n 个条目添加到具有 m 个条目和 i 个索引的数据库中然后提交的大 O 表示法有什么复杂性?
【问题讨论】:
插入没有索引的MyISAM 表需要O(n)(线性)时间。
插入InnoDB 表和任何索引需要log(m) * O(n)(线性时间取决于现有记录的数量)时间(假设m >> n),因为InnoDB 表和索引是B-Trees。
总时间是这些值的总和。
【讨论】:
这取决于表中的索引数量以及其他因素。
数据库中的每个单独操作都有不同的复杂性。例如,B-Tree 搜索操作的时间复杂度为 O(log n),而实际搜索的时间取决于是否发生表扫描,即 O(n)。
我想你可以建立一个对你所描述的内容来说相当复杂的方程。您必须单独考虑每个操作,而且我不确定这是否可以以确定性方式完成,因为数据库系统倾向于以临时方式决定它们将如何使用查询计划执行事物等。
【讨论】: