sql >> Databasteknik >  >> RDS >> Mysql

Hur man optimerar denna Levenshtein-avståndsberäkning

Jag antar att levenshtein_ratio är en funktion som du skrev (eller kanske ingår från någon annanstans). Om så är fallet, skulle databasservern inte kunna optimera det i normal mening med att använda ett index. Så det betyder att det helt enkelt behöver anropas för varje post som är resultatet av de andra anslutningsvillkoren. Med en inre koppling kan det vara ett extremt stort antal med dessa tabellstorlekar (max 8000*250000 =2 miljarder). Du kan kontrollera det totala antalet gånger den skulle behöva anropas med detta:

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

Det är en förklaring till varför det är långsamt (inte riktigt ett svar på frågan om hur man optimerar det). För att optimera det måste du troligen lägga till ytterligare begränsande faktorer till anslutningsvillkoret för att minska antalet anrop till den användardefinierade funktionen.



  1. Haversine Fomula med MySQL få närliggande platser

  2. Hur skapar man en tillfällig funktion i PostgreSQL?

  3. Förstå QUOTED_IDENTIFIER

  4. Vilka är de kända sätten att lagra en trädstruktur i en relationsdatabas?