Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL оптимизация при филтриране на двойки ключ-стойност като записи

Това трябва да ви осигури това, от което се нуждаете... Всяко от условията на клауза "OR"d where можете просто да продължите да добавяте като квалифициран елемент. След това просто коригирайте клаузата „Имащ“, за да отговаря на същия брой като критерии, които разрешавате... Поставих таблицата на релациите на първо място, тъй като това би имало по-малък съвпадащ набор от „Стойност“ на град или тип стойности. Уверете се, че имате индекс в таблицата на релациите в колоната "VALUE".

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

Ако искате всички действителни обектни данни ОТ този резултат, бихте го увили нещо като...

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. Колко реда ще бъдат заключени от SELECT ... ORDER BY xxx LIMIT 1 ЗА АКТУАЛИЗИРАНЕ?

  2. Извеждане на заглавия на колони в CSV Export

  3. Стратегия за съпоставяне на множество файлове в една таблица към едно поле в друга таблица

  4. Django raw() заявка, изчислено поле в клауза WHERE

  5. Използване на XML и XSD за създаване на попълнена база данни