8

像下面这样的简单 SQL 语句的时间复杂度是多少?

INSERT into table (col1, col2, col3) values ("a", "b", "c")

它如何取决于以下内容:

  1. 桌子的大小
  2. col1, col2 的数据类型
  3. 表中的列数,即。col1、col2、col3 等

这是否取决于我使用的是 MyISAM 还是 InnoDB?

4

1 回答 1

7

MySQL 5.0 文档有一个关于这个主题的不错的页面。

本文提供了插入任务中涉及的每个子任务的大致比例成本。

插入一行所需的时间由以下因素决定,其中数字表示近似比例:

连接:(3)

向服务器发送查询:(2)

解析查询:(2)

插入行:(1×行大小)

插入索引:(1 × 索引数)

结束: (1)

这没有考虑打开表的初始开销,每个并发运行的查询都会执行一次。

假设 B-tree 索引,表的大小会减慢 log N 的索引插入速度。

文章的其余部分提供了加快插入速度的技术,如果插入速度成为应用程序的瓶颈,这很有用。

于 2012-09-23T16:50:54.963 回答