Получить количество уникальных пользователей

Есть таблица 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;
        }
    }

Сначала я узнавал сколько есть одинаковых пользователей, а потом вычитал это из общего количества. Но вчера и перестал работать этот код. Он стал работать жутко медленно.

Подскажите с чем это может быть связано и какие есть пути решения проблемы? Спасибо.


Ответы (0 шт):