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

Разлики в производителността между равно (=) и IN с една буквална стойност

Няма разлика между тези две изрази и оптимизаторът ще трансформира IN към = когато IN има само един елемент в него.

Въпреки че, когато имате такъв въпрос, просто изпълнете и двата оператора, стартирайте техния план за изпълнение и вижте разликите. Тук - няма да намерите.

След голямо търсене онлайн намерих документ на SQL, за да поддържа това (предполагам, че се отнася за всички СУБД):

Ето плана за изпълнение на двете заявки в Oracle (повечето СУБД ще обработва това по същия начин):

EXPLAIN PLAN FOR
select * from dim_employees t
where t.identity_number = '123456789'

Plan hash value: 2312174735
-----------------------------------------------------
| Id  | Operation                   | Name          |
-----------------------------------------------------
|   0 | SELECT STATEMENT            |               |
|   1 |  TABLE ACCESS BY INDEX ROWID| DIM_EMPLOYEES |
|   2 |   INDEX UNIQUE SCAN         | SYS_C0029838  |
-----------------------------------------------------

И за IN() :

EXPLAIN PLAN FOR
select * from dim_employees t
where t.identity_number in('123456789');

Plan hash value: 2312174735
-----------------------------------------------------
| Id  | Operation                   | Name          |
-----------------------------------------------------
|   0 | SELECT STATEMENT            |               |
|   1 |  TABLE ACCESS BY INDEX ROWID| DIM_EMPLOYEES |
|   2 |   INDEX UNIQUE SCAN         | SYS_C0029838  |
-----------------------------------------------------

Както можете да видите, и двете са идентични. Това е в индексирана колона. Същото важи и за неиндексирана колона (само пълно сканиране на таблицата).



  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 LOAD DATA LOCAL INFILE не е разрешен през ODBC

  2. MySQL Вмъкване в множество таблици? (Нормализация на базата данни?)

  3. Как да дефинирате цяло число без знак в SQLAlchemy

  4. Как да покажа съпоставянето на база данни в MySQL

  5. ИЗБЕРЕТЕ една колона, ако другата е нула