Получить количество уникальных пользователей
Есть таблица users и таблица import. Обе таблицы содержать поле email. Я хочу узнать сколько уникальных пользователей есть в таблице import относительно таблицы users.
Я написал запрос:
SELECT count(A.email) FROM `import` A WHERE NOT EXISTS(SELECT 1 FROM users B WHERE B.email=A.email);
Локально (mysql 8) все работает отлично и быстро, но сервере (MYSQL 5.6) этот скрипт отрабатывает пару часов.
Тогда я решил пойти через костыли:
$sql1 = $MYSQLI->query("SELECT count(A.email) `count` FROM users A WHERE EXISTS(SELECT 1 FROM import B WHERE B.email=A.email);");
if($sql1){
while ($res1 = $sql1->fetch_assoc()){
$sql2 = $MYSQLI->query("select count(*) `count` from import");
if ($sql2){
while($res2 = $sql2->fetch_assoc()){
$res = $res2['count'] - $res1['count'];
if($res < 0)
$res = 0;
return $res;
}
}
break;
}
}
Сначала я узнавал сколько есть одинаковых пользователей, а потом вычитал это из общего количества. Но вчера и перестал работать этот код. Он стал работать жутко медленно.
Подскажите с чем это может быть связано и какие есть пути решения проблемы? Спасибо.