sql >> Databáze >  >> RDS >> Mysql

Jak optimalizovat tento výpočet Levenshteinovy ​​vzdálenosti

Předpokládám, že levenshtein_ratio je funkce, kterou jste napsali (nebo možná zahrnuli odjinud). Pokud ano, databázový server by to nebyl schopen optimalizovat v normálním smyslu použití indexu. Znamená to tedy, že jej jednoduše potřebuje zavolat pro každý záznam, který je výsledkem jiných podmínek spojení. S vnitřním spojením by to mohlo být extrémně velké číslo s těmito velikostmi tabulek (maximálně 8000*250000 =2 miliardy). Celkový počet, kolikrát by bylo potřeba zavolat, můžete zkontrolovat tímto:

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

To je vysvětlení, proč je pomalý (není to vlastně odpověď na otázku, jak to optimalizovat). Chcete-li ji optimalizovat, pravděpodobně budete muset do podmínky spojení přidat další omezující faktory, abyste snížili počet volání uživatelem definované funkce.



  1. Je možné provést výběr do tabulky typu objektu?

  2. Oracle dynamic sql vyhodnotit výraz v klauzuli where

  3. Instalace mysql na leoparda:Nelze se připojit k místnímu serveru MySQL přes socket

  4. Chyba aktualizace záznamu Vb6