sql >> Database teknologi >  >> RDS >> Mysql

Optimerer MySQL underforespørgsler automatisk?

MySQL er desværre ikke særlig god til at optimere underforespørgsler med IN. Dette er fra MySQL-dokumentation :

Prøv at bruge en JOIN i stedet.

Fordi MySQL fungerer indefra og ud, kan du nogle gange snyde MySQL ved at pakke underforespørgslen inde i endnu en underforespørgsel som sådan:

SELECT COUNT(*) FROM table_name WHERE device_id IN
     (SELECT * FROM (SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA') tmp)

Her er JOIN-løsningen:

SELECT COUNT(DISTINCT t2.id) FROM table_name t1
  JOIN table_name t2
    ON t2.device_id = t1.device_id
  WHERE t1.NAME = 'SOME_PARA'

Læg mærke til, at jeg starter indefra og også går ud.



  1. Indsæt flere rækker med PDO

  2. Er der nogen hukommelsesgrænse for json_encode()-metoden?

  3. MySQL:SyntaxError:Uventet identifikator

  4. er der nogen funktion til at oversætte data i sql