Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottimizzare questo calcolo della distanza di Levenshtein

Presumo che levenshtein_ratio è una funzione che hai scritto (o forse inclusa da qualche altra parte). In tal caso, il server di database non sarebbe in grado di ottimizzarlo nel senso normale dell'utilizzo di un indice. Quindi significa che deve semplicemente chiamarlo per ogni record che risulta dalle altre condizioni di join. Con un inner join, potrebbe essere un numero estremamente elevato con quelle dimensioni della tabella (un massimo di 8000*250000 =2 miliardi). Puoi controllare il numero totale di volte che dovrebbe essere chiamato con questo:

SELECT
      count(*)
   FROM
      library a,
      classifications b
   WHERE  
      a.`release_year` = b.`year`
      AND a.`id` IS NULL

Questa è una spiegazione del motivo per cui è lento (non proprio una risposta alla domanda su come ottimizzarlo). Per ottimizzarlo, probabilmente dovrai aggiungere ulteriori fattori limitanti alla condizione di unione per ridurre il numero di chiamate alla funzione definita dall'utente.