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

Czy wprowadzenie kluczy obcych do MySQL zmniejsza wydajność?

Zakładając:

  1. Używasz już silnika pamięci masowej, który obsługuje FK (np. InnoDB)
  2. Masz już indeksy w zaangażowanych kolumnach

Wtedy przypuszczam, że lepszą wydajność uzyskasz, jeśli MySQL wymusza integralność. Wymuszanie integralności referencyjnej jest przecież czymś, do czego zoptymalizowane są silniki baz danych. W porównaniu z tym pisanie własnego kodu do zarządzania integralnością w Ruby będzie powolne.

Jeśli musisz przejść z MyISAM do InnoDB, aby uzyskać funkcjonalność FK, musisz rozważyć kompromisy w wydajności między dwoma silnikami.

Jeśli nie masz jeszcze indeksów, musisz zdecydować, czy chcesz je mieć. Ogólnie rzecz biorąc, jeśli więcej czytasz niż piszesz, potrzebujesz (a nawet) indeksów.

Układanie FK na wierzchu rzeczy, które są obecnie indeksowane, powinno spowodować mniejszy spadek ogólnej wydajności niż implementacja tego rodzaju kontroli w kodzie aplikacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqldump błąd:pakiet większy niż max_allowed_packet'

  2. Źródło danych odrzuciło nawiązanie połączenia, wiadomość z serwera:Za dużo połączeń

  3. PHP-MYSQL:Konwersja uniksowego znacznika czasu na datę i godzinę i na odwrót

  4. Zmiana roku w mysql date

  5. Mysql:Jak wysłać zapytanie do kolumny, której typ jest bitowy?