mysql innodb通过主键删除10000行,但未使用索引

问题描述 投票:0回答:1

我使用MySQL存储引擎有一个InnoDB表。它包含大约8000000数据行,当我使用

delete from t where id in(1,2,3...) 

删除10000行数据,虽然id是主键,但它没有提示主键索引。表t具有6 indexes(Including primary key)。当我将SQL更改为]]

select * from t where id in(1,2,3...)

它可以命中主键索引。当我减少参数数量以删除5000行数据时,或者当我删除非主键索引但仍删除10000行数据时,它也可以命中主键索引。

mysql版本是5.7.27。要删除的ID是根据特定条件选择的,不是连续的。当我尝试保留两个辅助索引时,仍可以使用主键索引。

为什么尽管指定了主键值却没有命中索引?

deleted records的数量与secondary index的数量有什么关系?

我有一个使用InnoDB存储引擎的MySQL表。它包含大约8000000个数据行,当我使用id in(1,2,3 ...)从t中的delete删除10000行数据时,它没有暗示...

mysql indexing innodb sql-delete
1个回答
1
投票
什么版本?较新的版本已更改了处理长IN列表的两种方式之间的界限。
© www.soinside.com 2019 - 2024. All rights reserved.