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

Може ли MySQL да използва индекси, когато между условията има ИЛИ?

Планът на заявката за OR Случаят изглежда показва, че MySQL наистина използва индекси, така че очевидно да, може да го направи, поне в този случай. Това изглежда напълно разумно, защото има индекс на seen и id е PK.

Ако "логическите и разумни обяснения" са в противоречие с реалността, тогава е безопасно да се предположи, че логиката е погрешна или обясненията са погрешни или неприложими. Известно е, че производителността е трудно да се предвиди; тестването на производителността е от съществено значение там, където скоростта е важна.

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

Имайте предвид обаче, че двете ви заявки не са семантично еквивалентни:ако редът с id = 5204 също има seen = 3 след това OR заявката ще го върне веднъж, но UNION ALL заявката ще го върне два пъти. Безсмислено е да избирате между правилен код и неправилен код на всякаква основа, различна от коя е правилната.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да показвам албуми с изображения в публикации? [използвайки само PHP и MYSQL]

  2. Игнориране на апострофи при търсене в mysql

  3. получавайте последователи в Twitter, като използвате MySQL

  4. Името на таблицата или дължината на името на колоната влияят на производителността?

  5. Можем ли да изпълняваме SQL заявки в JQuery