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

Sådan optimerer du denne Levenshtein-afstandsberegning

Jeg antager, at levenshtein_ratio er en funktion, som du har skrevet (eller måske inkluderet fra et andet sted). Hvis det er tilfældet, ville databaseserveren ikke være i stand til at optimere det i den normale forstand ved at bruge et indeks. Så det betyder, at det blot skal kaldes det for hver post, der er resultatet af de andre joinbetingelser. Med en indre sammenføjning kan det være et ekstremt stort tal med disse tabelstørrelser (maksimalt 8000*250000 =2 milliarder). Du kan tjekke det samlede antal gange, det skal kaldes med dette:

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

Det er en forklaring på, hvorfor det er langsomt (ikke rigtig et svar på spørgsmålet om, hvordan man optimerer det). For at optimere den skal du sandsynligvis tilføje yderligere begrænsende faktorer til join-betingelsen for at reducere antallet af opkald til den brugerdefinerede funktion.



  1. Hvordan får man servicelegitimationsoplysninger for en serviceinstans oprettet på IBM Bluemix uden at binde instansen til en applikation på Bluemix?

  2. JDBC-forbindelse oprettet ineclipse fungerer ikke, som den skal

  3. KONVERTER MySQL-forespørgsel til SQL Server (MSSQL / SQLSRV) (Med DISTINCT)

  4. SQL - Erstatning af dubletværdi med tom