mysql - 为什么 MySQL 插入这么慢?

标签 mysql optimization

CREATE  TABLE IF NOT EXISTS `church` (
  `church_id` INT(11) NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(40) NOT NULL ,
  `city_id` SMALLINT(4) UNSIGNED ZEROFILL NOT NULL ,
  `validated` TINYINT(1) NULL ,
  PRIMARY KEY (`church_id`) ,
  INDEX `church.city_id-city.city_id_idx` (`city_id` ASC) ,
  UNIQUE INDEX `church-city_id` (`name` ASC, `city_id` ASC) ,
  CONSTRAINT `church.city_id-city.city_id`
    FOREIGN KEY (`city_id` )
    REFERENCES `city` (`city_id` )
    ON DELETE RESTRICT
    ON UPDATE RESTRICT)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

我的本​​地主机(笔记本电脑)上有这张 table church。当我对其进行插入时(现在有 10 行),需要 160 毫秒。

  • church_id 用作其他表中的外键。
  • 名称和 city_id 一起应该是唯一的。
  • city_id 是外键

这不是太多了,我是不是做错了什么?

最佳答案

插入必须完成大量工作:

  • 锁定表格
  • 检查唯一索引约束
  • 检查外键约束
  • 写入新记录
  • 更新索引
  • 解锁表格
  • 写入事务日志

关于mysql - 为什么 MySQL 插入这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658543/

相关文章:

mysql - 在关系数据库中构建搜索索引的策略

mysql子查询性能

python - 如何在 cython 中指定列表和元组类型

java - 使用 null 而不是默认值可以获得性能提升?

mysql - 数据库关系、外键和图表 - MySQL workbench

MySQL:查找多个重复记录

mysql - 如何对单个空格进行字符串比较

react-native - React Native StyleSheet 优化

c++ - 功能列表和包装

C 功能优化