sql >> Database >  >> RDS >> Mysql

MySQL-optimalisatie bij het filteren van sleutel-waardeparen als records

Dit zou je moeten geven wat je nodig hebt... Elk van de "OF"d waar-clausulevoorwaarden, kun je gewoon blijven toevoegen als een gekwalificeerd item. Pas vervolgens de clausule "Hebbend" aan om aan hetzelfde aantal te voldoen als de criteria die u toestaat... Ik heb de tabel met relaties eerst geplaatst, want dat zou een kleinere overeenkomende set hebben op de "Waarde" van de stad of typ waarden. Zorg ervoor dat u een index heeft in de relatietabel in de kolom "WAARDE".

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

Als u alle feitelijke objectgegevens van deze resultaten wilt, zou u het als volgt inpakken...

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



  1. Kan geen verbinding maken met MySQL in NetBeans IDE

  2. Hoe CHAR() werkt in MariaDB

  3. Onder welke omstandigheden zou je willen dat Rails wordt ingesteld om NIET opnieuw verbinding te maken met MYSQL

  4. voeg autoincrement in tweede kolom in