我不知道,为什么在innodb表上删除需要大约30秒
表有4码行
ID
的索引KID索引
(那只是索引,没有主要,没有唯一因为表是分区的) 表是分区的
delete from my_table where id = 'xxx' and kid = 'ds54f5sad6w5' limit 1
在慢速日志中 查询时间39秒 锁定时间36秒 行检查96879
问题出在磁盘(使用ssd)
解释从my_table
选择sql_no_cache * WHERE id
='1663903'AND kid
='84d4af871929d2159d7d7399a79bb384'LIMIT 1
解释写
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE my_table index_merge id,kid id,kid 3,98 NULL 1 Using intersect(id,kid); Using where
答案 0 :(得分:0)
您的EXPLAIN显示您的查询使用“index_merge”访问type
。
因此必须搜索两个索引(这些索引显示在keys
字段中),找到相关条目,然后找到两个结果之间的交集。
这可能比非索引搜索更好,但通常最好创建一个包含两列的索引(id,kid)。