优化mysql中删除的位置

ffx8fchx  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(263)

我有一个mysql性能问题:我必须更新一个大型innodb表(大约100万行),删除数千行。假设它是来自多个来源的项目。因此,该表有一个主键item\u id,一个provider\u id列标识该项的提供者,一个external\u id列(它是该提供者中该项的id,这个特定提供者标识它的方式),它必须是varchar(几个提供者,它们标识其项的几个内部方式)。
当我更新时,我会逐个提供程序,并在json文件和数据库之间进行匹配/区分,以知道哪些项必须添加、更新或删除。匹配项在外部\u id上。当我必须删除项目时,我会使用如下查询 DELETE FROM table_items WHERE provider_id=A AND external_id IN (...) . 即使我批量生产1k的产品,速度也很慢。
下面是一个简化的表定义

CREATE TABLE `annonce` (
    `annonce_id` INT(11) NOT NULL AUTO_INCREMENT,
    `annonce_id_externe` VARCHAR(70) NOT NULL,
    `provenance_id` INT(11) NOT NULL,
    `categorie_id` INT(11) NOT NULL,
    PRIMARY KEY (`annonce_id`),
    UNIQUE INDEX `id_externe_par_provenance_et_categorie` (`annonce_id_externe`, `provenance_id`, `categorie_id`),
    INDEX `provenance_id` (`provenance_id`),
    INDEX `annonce_id_externe` (`annonce_id_externe`),
    INDEX `categorie_id` (`categorie_id`),
    CONSTRAINT `annonce_categorie_id` FOREIGN KEY (`categorie_id`) REFERENCES `categorie` (`categorie_id`) ON UPDATE CASCADE ON DELETE CASCADE,
    CONSTRAINT `annonce_provenance_id` FOREIGN KEY (`provenance_id`) REFERENCES `provenance` (`provenance_id`) ON UPDATE CASCADE ON DELETE CASCADE,
)

有没有办法加快速度?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题