Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Optymalizacja MySQL pod kątem filtrowania par klucz-wartość jako rekordów

To powinno dać ci to, czego potrzebujesz... Każdy z warunków klauzuli "OR"d where możesz po prostu dodawać jako kwalifikowany element. Następnie po prostu dostosuj klauzulę „Posiadanie”, aby spełniała tę samą liczbę, co kryteria, na które zezwalasz… Najpierw umieściłem tabelę relacji, ponieważ miałaby ona mniejszy dopasowany zestaw wartości „Wartość” wartości miasta lub typu. . Upewnij się, że masz indeks w tabeli relacji w kolumnie „WARTOŚĆ”.

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

Jeśli chcesz uzyskać wszystkie rzeczywiste dane obiektu Z tych wyników, opakowuj je w sposób podobny do...

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest jednostka czasu w dzienniku powolnych zapytań MySQL?

  2. Usuń wiersze z serwera mysql z listy identyfikatorów C#

  3. znajdź rekordy z szerokością i długością geograficzną

  4. Dlaczego musimy zamknąć bazę danych MySQL po poleceniu zapytania?

  5. Jak zapisać i pobrać obraz na moim serwerze w aplikacji internetowej java