Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zoptymalizować obliczenia odległości Levenshteina

Zakładam, że levenshtein_ratio to funkcja, którą napisałeś (lub może dołączyłeś z innego miejsca). Jeśli tak, serwer bazy danych nie byłby w stanie zoptymalizować tego w normalnym sensie korzystania z indeksu. Oznacza to, że po prostu musi to wywołać dla każdego rekordu, który wynika z innych warunków złączenia. W przypadku sprzężenia wewnętrznego może to być bardzo duża liczba przy tych rozmiarach tabeli (maksymalnie 8000*250000 =2 miliardy). Możesz sprawdzić łączną liczbę wywołań, używając tego:

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

To jest wyjaśnienie, dlaczego jest powolny (nie jest to tak naprawdę odpowiedź na pytanie, jak go zoptymalizować). Aby go zoptymalizować, prawdopodobnie będziesz musiał dodać dodatkowe czynniki ograniczające do warunku dołączenia, aby zmniejszyć liczbę wywołań funkcji zdefiniowanej przez użytkownika.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql:znajdź wiersze z powtarzającymi się wartościami plus warunek

  2. Wybierz bez opcji FROM, ale z więcej niż jednym rzędem

  3. VARCHAR jako klucz obcy/klucz podstawowy w bazie danych dobry czy zły?

  4. Jak wycofać solone hasło z Bazy Danych i auth użytkownika?

  5. MySQL:sprzężenie wewnętrzne vs. Gdzie