我正在尝试优化以下查询,它会为我带来以下结果
EXPLAIN UPDATE table1 a
JOIN table2 b
ON a.id=b.ref_id
SET a.value=b.value;
当我尝试解释查询时,得到以下结果。
ID select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE b ALL idx_ref_id 10785
1 SIMPLE a ref idx_id idx_id 4 b.ref_id 24
据我了解,查询仅使用一个索引,即idx_id而不是idx_ref_id。
编辑:
这是表结构。
SHOW CREATE TABLE table1;
CREATE TABLE table_1 (
`id` int(11) NOT NULL DEFAULT '0',
`companyname` varchar(100) NOT NULL DEFAULT '',
`value` varchar(100) NOT NULL DEFAULT '',
`sve_value` varchar(100) NOT NULL DEFAULT '',
KEY `idx_id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
SHOW CREATE TABLE table2;
CREATE TABLE `table2` (
`value` varchar(255) DEFAULT NULL,
`suggested_value_enrichement` varchar(255) DEFAULT NULL,
`tags` varchar(255) DEFAULT NULL,
`ref_id` int(11) NOT NULL DEFAULT '0',
KEY `idx_ref_id` (`ref_id`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
请帮助我,如果有误,也请纠正我。
谢谢。
答案 0 :(得分:0)
问题在于服务器上有许多正在运行的进程阻塞了资源。此外,还有许多与数据库的理想连接,精确到150左右。
因此,通过终止进程并终止理想的连接可以解决此问题。
查询执行在一分钟内完成。