Выполнение SQL-запросов слишком плохо для MySQL - PullRequest
2 голосов
/ 25 декабря 2011

Я запускаю следующий SQL-запрос на платформе MySQL.

Таблица A - это таблица, в которой есть один столбец (первичный ключ) и 25K строк. В таблице B есть несколько столбцов и 75 тыс. Строк.

Выполнение следующего запроса занимает 20 минут. Буду рад, если вы сможете помочь.

INSERT INTO sometable
SELECT A.PrimaryKeyColumn as keyword, 'SomeText', B.*
FROM A, B
WHERE B.PrimaryKeyColumn = CONCAT(A.PrimaryKeyColumn, B.NotUniqueButIndexedColumn);

Ответы [ 2 ]

5 голосов
/ 25 декабря 2011

Запустите SELECT без INSERT, чтобы увидеть, связана ли проблема с SELECT или нет.

Если это с SELECT, следуйте документации MySQL, объясняющей, как оптимизировать запросы, используя EXPLAIN.

Если SELECT работает нормально, но INSERT работает вечно, убедитесь, что у вас нет большого количества ненужных индексов на sometable. Кроме того, вам может потребоваться выполнить некоторые настройки MySQL и / или настройки ОС (например, производительность памяти или диска), чтобы получить ощутимый прирост производительности с INSERT.

0 голосов
/ 26 декабря 2011

Если я правильно понял, вы пытаетесь вставить 1,875 миллиардов записей - (что не соответствует предложению where).

Для тех 20 минут звучит не так уж плохо ....

...