sql >> Databasteknik >  >> RDS >> Mysql

MySQL-optimering för att filtrera nyckel-värdepar som poster

Detta bör ge dig det du behöver... Var och en av "ELLER"d där klausulvillkoren kan du bara fortsätta lägga till som en kvalificerad artikel. Sedan är det bara att justera "Having"-satsen så att den uppfyller samma antal som kriterierna du tillåter...Jag har satt relationstabellen först eftersom det skulle ha en mindre matchad uppsättning på "Värde" för stad- eller typvärden. Se till att du har ett index i relationstabellen i kolumnen "VÄRDE".

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

Om du vill ha alla faktiska objektdata FRÅN detta resultat, skulle du linda in det ungefär som...

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



  1. Använd PDO databasklass utan att skapa ny anslutning varje gång?

  2. PHP-kod för att infoga kryssrutavärde i specifik kolumn på mysql med välj formulär

  3. SQLite JSON_PATCH()

  4. Hur man itererar genom PostgreSQL jsonb-matrisvärden i syfte att matcha i en fråga