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

Кое е по-бързо:корелирани подзаявки или присъединяване?

Първо, корелираната подзаявка наистина е вид присъединяване. Няма златно правило за това кой е най-добрият план за изпълнение. Ако се интересувате от производителност, трябва да изпробвате различните форми, за да видите кое работи най-добре. Или поне погледнете плановете за изпълнение, за да вземете това решение.

Като цяло съм склонен да избягвам корелирани подзаявки по няколко причини. Първо, те почти винаги могат да бъдат написани без корелация. Второ, много машини за заявки ги превръщат във вложени циклични съединения (макар и с помощта на индекси), а други стратегии за присъединяване може да са по-добри. В такива случаи корелираните подзаявки затрудняват паралелизирането на заявката. Трето, корелираните подзаявки обикновено са в клаузите SELECT или WHERE. Харесва ми всичките ми таблици да са в клаузата FROM.

В MySQL обаче корелираните подзаявки често са най-много ефективен начин за извършване на заявка. Това е особено вярно, когато използвате подзаявка в IN клауза. Така че няма златно правило.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver (maven + jboss)

  2. Не може да се свърже с MySQL сървър грешка 111

  3. OpenSSL - грешка 18 при търсене в дълбочина:самоподписан сертификат

  4. MySQL:ALTER IGNORE TABLE дава нарушение на ограничението за целостта

  5. PHP float/double се съхранява като MySQL DECIMAL