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

Optymalizacja zapytań MySQL z operatorem IN

Indeks na categoryId nie pomoże w tym przypadku, IN (...) zapytania i tak wygenerują skanowanie sekwencji zamiast wyszukiwania indeksu.

Rozważałbym najpierw przeprojektowanie systemu, aby pozbyć się wyboru wielu kategorii, a jeśli nie jest to właściwe, buforowanie wyników zapytań.

Na przykład można utworzyć tabelę pomocniczą items_category_groups(hash, item_id) i po zapytaniu klienta o wiele kategorii mieszamy ich połączone identyfikatory i przeszukujemy tę tabelę. Jeśli nie zostanie znaleziony, wykonaj kosztowne zapytanie i wypełnij tę tabelę. Jeśli zostanie znaleziony, wykonaj tanie zapytanie łączące te tabele. Inne narzędzia do buforowania, takie jak memcached, również będą działać.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie danych Androida z bazy danych nie działa (php + json + mysql)

  2. mysql ERROR 1064 (42000):Wystąpił błąd w składni SQL;

  3. Instrukcja zapytania dynamicznego MySQL w Pythonie

  4. Koncepcje Angular 2 i MySQL

  5. Odejmowanie dwóch równych wartości nie jest zerem w mysql