celem zapytania jest również znalezienie możliwych duplikatów nazw, które były błędnie wpisane. Przykład:Dodawanie wielu warunków do MySQL Inner Join
International Group Inc.
należy znaleźć jako duplikat International, Group Inc
W celu realizacji tego używanego następnego zapytania:
SELECT C.id,
C.name,
C.address,
C.city_id
FROM company C
INNER JOIN (SELECT name
FROM company
GROUP BY name
HAVING Count(id) > 1) D
ON Replace(Replace(C.name, '.', ''), ',', '') =
Replace(Replace(D.name, '.', ''), ',', '')
To działa bardzo dobrze, a wynik był na 40 secs
ale dodanie dodatkowy warunek, taki jak AND C.city_id='4'
wymaga dodatkowej minuty lub więcej; Jest to nadal akceptowalne, ale nie preferowane.
Mój prawdziwy problem występuje, gdy próbuję dodać kolejny warunek, aby znaleźć tylko duplikaty firm, które mają określony ciąg w nazwie, przy użyciu tego warunku AND C.name LIKE '%International%'
, to po prostu nie zwraca żadnych wyników.
Czy ktoś może mi pomóc dowiedzieć się, co robię źle?
Dzięki
Niestety, nie sądzę, można efektywnie korzystać z indeksów w tym scenariuszu - chociaż 1 minutę + wydaje się bardzo powolny. – Strawberry