アプリケーションに mysql db を使用しています。4,000 万行のデータを含む 1 つのテーブルがあります。このテーブルで 1 つの更新クエリを実行したいと考えています。テーブルには 3 つのフィールドが含まれています。ID、TaxiId、date&distance です。 Taxiid's.I は、このような 1 つのクエリを使用しています
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;
このクエリを実行すると、アプリケーション全体がハングします。