“优化插入记录的速度”的版本间的差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
Jihongchang(讨论 | 贡献)  | 
				Jihongchang(讨论 | 贡献)   | 
				||
| 第1行: | 第1行: | ||
| − | ===   | + | 插入记录时,<u><big>'''索引'''</big></u>、<big><u>'''唯一性校验'''</u></big>都会影响插入记录的速度  | 
| + | |||
| + | === 禁用索引 ===  | ||
插入记录时,MySQL 会根据表的索引对插入的记录进行排序。  | 插入记录时,MySQL 会根据表的索引对插入的记录进行排序。  | ||
| 第17行: | 第19行: | ||
alter table 表名 enable keys;  | alter table 表名 enable keys;  | ||
</syntaxhighlight>对于新创建的表,可以先不创建索引。等到记录都导入以后再创建索引。这样可以提高导入数据的速度。  | </syntaxhighlight>对于新创建的表,可以先不创建索引。等到记录都导入以后再创建索引。这样可以提高导入数据的速度。  | ||
| + | |||
| + | |||
| + | === 禁用唯一性校验 ===  | ||
| + | 插入数据时,MySQL 会对插入的记录进行唯一性校验。这种校验也会降低插入记录的速度。  | ||
| + | |||
| + | 可以在插入记录之前禁用唯一性检查。等到记录插入完毕后再开启。  | ||
| + | |||
| + | ==== 禁用唯一性检查 ====  | ||
| + | <syntaxhighlight lang="sql">  | ||
| + | set unique_checks=0;  | ||
| + | </syntaxhighlight>  | ||
| + | |||
| + | ==== 重新开启唯一性检查 ====  | ||
| + | <syntaxhighlight lang="sql">  | ||
| + | set unique_checks=1;  | ||
| + | </syntaxhighlight>  | ||
| + | |||
| + | |||
| + | |||
| + | === 优化 insert 语句 ===  | ||
2024年7月10日 (三) 02:23的版本
插入记录时,索引、唯一性校验都会影响插入记录的速度
禁用索引
插入记录时,MySQL 会根据表的索引对插入的记录进行排序。
如果插入大量数据时,这些排序会降低插入记录的速度。
为了解决这种情况,在插入记录之前先禁用索引。
等到记录都插入完毕后再开启索引。
禁用索引
alter table 表名 disable keys;
重新开启索引
alter table 表名 enable keys;
对于新创建的表,可以先不创建索引。等到记录都导入以后再创建索引。这样可以提高导入数据的速度。
禁用唯一性校验
插入数据时,MySQL 会对插入的记录进行唯一性校验。这种校验也会降低插入记录的速度。
可以在插入记录之前禁用唯一性检查。等到记录插入完毕后再开启。
禁用唯一性检查
set unique_checks=0;
重新开启唯一性检查
set unique_checks=1;