#mysql #ubuntu #amazon-ec2
#mysql #ubuntu #amazon-ec2
Вопрос:
Я пытаюсь выполнить следующий запрос в экземпляре AWS ec2 xlarge:
mysql> CREATE TABLE 3 SELECT * FROM TABLE 2 WHERE ID IN (SELECT ID FROM TABLE1);
Я попытался использовать ec2, поскольку подумал, что, возможно, это мой ноутбук делает запрос, занимающий много времени, поскольку в таблице 1 14000 строк и 6 столбцов, а в таблице 2 около 1 миллиона строк и 11 столбцов. Однако я получаю:
Ошибка записи: сломанный канал
При использовании экземпляра aws и тайм-аута СУБД на моем ноутбуке.
Должен ли запрос принимать>, чем эти триггеры тайм-аута? В любом случае, чтобы сформулировать запрос лучше?
Комментарии:
1. Почему это отклонено? Я неправильно сформулировал вопрос?
2. есть странные люди, которые не голосуют без мотивации, … не волнуйтесь
3. справедливо, просто хочу убедиться, что я не нарушил никаких правил форума
4. Нет… ваш вопрос .. правильный и корректный .. предложенный .. иногда .. кто-то .. посмотрите и проголосуйте без мотивации .. .. терпение
Ответ №1:
MySQL очень плохо выполняется WHERE table1.id IN (SELECT table2.id ...)
. Лучше использовать JOIN
.
CREATE TABLE Table3
SELECT t2.*
FROM Table2 AS t2
JOIN Table1 AS t1 ON t1.id = t2.id
Комментарии:
1. должен ли я выбирать все строки (t1. *), если мне нужен только столбец ID?
2. Вы должны выбрать те столбцы, которые вы хотите вставить
Table3
. Я использовалSELECT t1.*
, потому что у вашего вопроса естьSELECT *
.3. У меня был
Table1
иTable2
обратный ответ на ваш вопрос, я это исправил.4. Прошло более 10 минут, и процесс все еще выполняется, это типичное поведение для MySQL?
5. Убедитесь, что в обеих таблицах есть индексы в
id
столбце.
Ответ №2:
Попробуйте логически разделить запрос
CREATE TABLE3
SELECT *
FROM TABLE2
WHERE ID IN (SELECT ID FROM TABLE1 where id between 1 and 10000);
и затем
insert into table3
SELECT *
FROM TABLE2
WHERE ID IN (SELECT ID FROM TABLE1 where id between 10001 and 20000);
Комментарии:
1. Спасибо, я дам вам знать, что произойдет.
2. ИСПОЛЬЗУЙТЕ CT -A; Чтение информации таблицы для завершения имен таблиц и столбцов Вы можете отключить эту функцию, чтобы ускорить запуск с помощью -A
3. Когда я выполняю это, все равно требуется вечность, чтобы открыть базу данных … поскольку это довольно мощный экземпляр, является ли такое поведение нормальным для MySQL?
4. @Stacksofoverflow я не понимаю вашего комментария .. пожалуйста, объясните лучше
5. мои извинения, были некоторые фоновые процессы, которые пришлось убить