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

MySQL оптимизира ли автоматично подзаявките?

За съжаление MySQL не е много добър в оптимизирането на подзаявки с IN. Това е от документация на MySQL :

Опитайте да използвате JOIN вместо това.

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

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

Ето решението JOIN:

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'

Забележете, че започвам отвътре и също излизам.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкна NULL в mysql, особено INT dataType

  2. Decimal VS Int в MySQL?

  3. Броят на колоните не съвпада с броя на стойностите в реда, но го прави

  4. Рекурсивна MySQL заявка?

  5. MySQL вмъкване при дублирана актуализация за не-PRIMARY ключ