我正在为我的应用程序使用mysql db。我有一个表有4000万行数据。我想在这个表中运行一个更新查询。表包含三个字段.Id,TaxiId,date& distance.I想要更新特定的Taxiid的距离为零。我正在使用这样的一个查询
update abc set distance=0 where TaxiId in(2026,2031,2033,2035,2037,2039);
使用说明时我得到的结果
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE abc range abc_trip_fk abc_trip_fk 5 1916397 Using where
表格声明
CREATE TABLE `testdb`.`abc` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`TaxiId` int(8) DEFAULT NULL,
`distance` double DEFAULT NULL,
`date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (id),
KEY `trip_fk` (`TaxiId`) USING BTREE,
) ENGINE=InnoDB AUTO_INCREMENT=125127797 DEFAULT CHARSET=latin1;
当我运行此查询时,整个应用程序都会挂起。
答案 0 :(得分:0)
Innodb缓冲池选项对于mysql性能来说是非常重要的选择
尝试进行以下设置
的innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = 25GB
在数据库中插入/更新/删除操作时禁用索引 有关mysql性能设置find here
的更多信息