Ускорить\оптимизировать SELECT WHERE IN SELECT

219
12 декабря 2017, 17:23

Есть две разных таблицы, необходимо из первой выбрать только те записи, поле из которых существует во второй

SELECT * FROM table1 WHERE field1 in (SELECT field FROM table2)

В первой таблице 10 миллионов записей, во второй - 500 тысяч. Выполняется такой запрос нереально долго и честно говоря, я даже не рискнул дождаться завершения.

Может можно как-то оптимизировать?

Answer 1
SELECT DISTINCT t1.*
FROM table1 t1, table2 t2
WHERE t1.field1 = t2.field2

Ну и, само собой, наличие необходимых индексов (по полям связи, либо составных, где эти поля являются префиксом).

READ ALSO
Не работает MySQL на Ubuntu

Не работает MySQL на Ubuntu

У меня возникли проблемы при подключении к MySQLВыдает следующую ошибку:

249
Добавить в JOIN значение по умолчанию

Добавить в JOIN значение по умолчанию

Всем доброе время суток, есть несколько таблиц

222