Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да оптимизираме това изчисление на разстоянието на Левенщайн

Предполагам, че levenshtein_ratio е функция, която сте написали (или може би включена от някъде другаде). Ако е така, сървърът на базата данни няма да може да оптимизира това в нормалния смисъл на използване на индекс. Така че това означава, че просто трябва да го извика за всеки запис, който е резултат от другите условия на присъединяване. С вътрешно свързване това може да бъде изключително голям брой с тези размери на таблицата (максимум 8000*250000 =2 милиарда). Можете да проверите общия брой пъти, когато трябва да бъде извикан с това:

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

Това е обяснение защо е бавен (всъщност не е отговор на въпроса как да се оптимизира). За да го оптимизирате, вероятно ще трябва да добавите допълнителни ограничаващи фактори към условието за присъединяване, за да намалите броя на повикванията към дефинираната от потребителя функция.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel вложени връзки

  2. MySql в DNX 5.0

  3. pdo вмъкване на изображение в базата данни директно - винаги вмъкване на BLOB - 0B

  4. Как да вмъкна специални символи в база данни?

  5. Как да използвате „having“ с paginate в колоната на връзката в laravel 5