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

MySQL-optimering ved filtrering af nøgleværdi-par som poster

Dette burde give dig, hvad du har brug for... Hver af "ELLER"d hvor-klausulens betingelser, kan du bare blive ved med at tilføje til som en kvalificeret vare. Derefter skal du bare justere "Having"-klausulen for at opfylde det samme antal som de kriterier, du tillader...Jeg har sat relationstabellen først, da det ville have et mindre matchet sæt på "Værdi" af by- eller typeværdier. Sørg for, at du har et indeks på relationstabellen i kolonnen "VÆRDI".

SELECT STRAIGHT_JOIN
      rel.id_obj
   from 
      relations rel
         join attributes atr
            on rel.id_addr = atr.id
   where 
         ( rel.value = 'Apartment' AND atr.name = 'Type'  )
      or ( rel.value = 'Some City' AND atr.name = 'City' )
   group by 
      atr.id_obj
   having
      count(*) = 2
   limit
      0, 20

Hvis du vil have alle de faktiske objektdata FRA dette resultat, vil du pakke det noget i retning af...

select obj.*
   from 
      ( complete SQL statement above ) PreQuery
         join Object obj on PreQuery.id_obj = obj.id



  1. Postgres Notify arbejder ikke med logisk replikering

  2. Bedste mulighed for at gemme brugernavn og adgangskode i Android-appen

  3. MySQL - hvad gør skip-locking i my.cnf?

  4. Hvorfor Optimizer ikke bruger Buffer Pool Knowledge