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/