在一个巨大的表中更新查询

时间:2013-10-11 10:21:06

标签: mysql sql database

我正在为我的应用程序使用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;

当我运行此查询时,整个应用程序都会挂起。

1 个答案:

答案 0 :(得分:0)

Innodb缓冲池选项对于mysql性能来说是非常重要的选择 尝试进行以下设置
的innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = 25GB

在数据库中插入/更新/删除操作时禁用索引 有关mysql性能设置find here

的更多信息