У меня есть программа, которая имеет функцию, чтобы показать, по крайней мере, дублирующую аналогичную строку в записях MySQL по крайней мере 2, у меня есть текущая реализация, которая работает хорошо, НО слишком медленно для записей 300K.
Пример записей таблицы CONTACT:
id (int)| name (string) | phone (string)
-----------------------------------------
1 | mike | 081239812345678
2 | jhon | 082222212345678
3 | rudy | 081237712345678
4 | lucy | 081237712345123
5 | lily | 081244412345678
Мне нужно, чтобы запись принадлежала "mike, jhon, rudy and lily", потому что 8 из их последних цифр номера телефона совпадают (дублируются), но запись, принадлежащая Люси, игнорируется (потому что никакие другиезапись имеет аналогичное 8-значное конечное число)
Мой текущий метод заключается в использовании 2 запросов, таких как:
Мой первый запрос:
"select right(phoner, 8) as myRight
, count(*) as totdup
from contact
group by myRight
having totdup > 1";
из этого запроса я могу получитьзначение «myRight», затем я выполняю второй запрос, чтобы получить подробности:
"select * from contact where phone like '%$myRight'";
Мой вопрос: КАК ускорить процесс, потому что у меня есть записи 300 КБ, и для этого запроса требуется около 20 минут, также яЯ пытаюсь упростить запрос, используя только 1 запрос, но я не знаю, как, я боролся с этой проблемой уже пару дней, ваша помощь будет очень признательна.