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

Jak sprawić, by dobrze zindeksowane tabele MySQL skutecznie się łączyły?

OK, przetestowałem to na ponad 30 000 rekordów na stół i działa bardzo szybko.

W obecnej sytuacji wykonujesz sprzężenie na dwóch ogromnych stołach, ale jeśli najpierw poszukasz dopasowań na 'val' na każdym stole, znacznie zmniejszy to rozmiar zestawów sprzężeń.

Pierwotnie opublikowałem tę odpowiedź jako zestaw podzapytań, ale nie zdawałem sobie sprawy, że MySQL jest boleśnie powolny w zagnieżdżonych podzapytaniach, ponieważ jest wykonywany z zewnątrz. Jeśli jednak zdefiniujesz podzapytania jako widoki, uruchamia je od wewnątrz.

Dlatego najpierw utwórz widoki.

CREATE VIEW tbl1_iii AS (
SELECT * FROM tbl1 WHERE val='iii'
);
CREATE VIEW tbl2_iii AS (
SELECT * FROM tbl2 WHERE val='iii'
);

Następnie uruchom zapytanie.

SELECT tbl1_iii.id from tbl1_iii,tbl2_iii
WHERE tbl1_iii.id = tbl2_iii.id;

Błyskawica.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jakie sortowanie MySQL jest najlepsze do akceptowania wszystkich znaków Unicode?

  2. mysql:zobaczyć wszystkie otwarte połączenia z daną bazą danych?

  3. Wskazówki dotyczące zapewniania wydajności bazy danych MySQL — część druga

  4. mySQL SELECT nadchodzące urodziny

  5. Now() a GetDate()