Как оптимизировать запрос на соединение MySQL, не используя соединение - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь оптимизировать приведенный ниже запрос, он дает мне следующий результат

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 голосов
/ 31 мая 2019

Проблема с запросом - на сервере выполнялось много процессов, которые блокировали ресурсы.Также было много идеальных соединений с базой данных с точностью до 150.

Таким образом, остановив процесс и завершив идеальное соединение, мы решили проблему.

Выполнение запроса завершилось в течение минуты.

...