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

защо sql с 'exists' работи по-бавно от 'in', използвайки MySQL

Мисля, че имате малко объркване, имате грешна представа, „EXISTS“ работи по-бързо от „IN“ и се опитвам да ви накарам да разберете причината..

EXISTS връща булева стойност и ще върне булева стойност при първото съвпадение. Така че, ако имате работа с дубликати/множества, „EXISTS“ ще бъде по-бързо за изпълнение от „IN“ или „JOIN“ в зависимост от данните и нуждите.

Като има предвид, че „IN“ е синтактична захар за клаузи ИЛИ. Въпреки че е много удобен, има проблеми с работата с много стойности за това сравнение (на север от 1000). В случай на дублиране/множество 'IN' проверява всички съществуващи стойности, което естествено отнема повече време за изпълнение от 'EXISTS', ето защо „IN“ винаги е сравнително по-бавен от „EXISTS“.

Надявам се, че изясних объркването ви.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Автоматично затваряне на db връзка в php?

  2. MySQL:Проверете ограничението с дата

  3. Как да нулирате паролата за root на MySQL

  4. Свързване на Ms Access Db към Mysql чрез Vba

  5. Преобразуване на PHP диапазон от време в MYSQL отделни дати