如何优化mysql连接查询,不使用连接

时间:2019-05-06 07:47:14

标签: mysql join query-optimization

我正在尝试优化以下查询,它会为我带来以下结果

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;

请帮助我,如果有误,也请纠正我。

谢谢。

1 个答案:

答案 0 :(得分:0)

问题在于服务器上有许多正在运行的进程阻塞了资源。此外,还有许多与数据库的理想连接,精确到150左右。

因此,通过终止进程并终止理想的连接可以解决此问题。

查询执行在一分钟内完成。