sql >> Databáze >  >> RDS >> Mysql

Optimalizuje MySQL poddotazy automaticky?

MySQL bohužel není moc dobrá v optimalizaci poddotazů pomocí IN. Toto je z dokumentace MySQL :

Zkuste místo toho použít JOIN.

Protože MySQL funguje zevnitř ven, někdy můžete oklamat MySQL tím, že zabalíte poddotaz do dalšího poddotazu, jako je tento:

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

Zde je řešení 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'

Všimněte si, že začínám zevnitř a jdu také ven.



  1. MySql Count nemůže zobrazit 0 hodnot

  2. XSD na schéma MySQL

  3. Přesunout systémové databáze v clusteru převzetí služeb při selhání serveru SQL Server

  4. Používáte tip NOLOCK v EF4?