l'obiettivo della query è anche trovare possibili duplicati di nomi che sono stati digitati in modo errato. Esempio:Aggiunta di più condizioni a MySQL Inner Join
International Group Inc.
deve essere trovare come un duplicato di International, Group Inc
Al fine di raggiungere questo obiettivo un usato la query successiva:
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, '.', ''), ',', '')
Funziona molto bene e il risultato è venuto a 40 secs
, ma l'aggiunta di un condizioni extra come AND C.city_id='4'
richiedono un minuto extra o più; Questo è ancora accettabile ma non preferibile.
Il mio vero problema si verifica quando provo ad aggiungere un'altra condizione per scoprire solo i duplicati di aziende che hanno una stringa specifica nel nome, usando questa condizione AND C.name LIKE '%International%'
, questo non restituisce alcun risultato.
Qualcuno potrebbe aiutarmi a capire cosa sto facendo male?
Grazie
Purtroppo, io non credo che si possa fare un uso efficiente degli indici in questo scenario - anche se uno minuti + sembra estremamente lento. – Strawberry