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

Czy kolejność tabel w sprzężeniach prostych, bez dyrektyw wskazówki, wpływa na wydajność?

Odpowiedz na Twoje pytanie - Tak, kolejność stołu ma znaczenie przy dołączaniu.

Możesz również poinformować optymalizatora o planie wykonania.

Wskazówka ORDERED powoduje, że Oracle łączy tabele w kolejności, w jakiej występują w klauzuli FROM.

Na przykład ta instrukcja łączy tabelę TAB1 z tabelą TAB2, a następnie łączy wynik z tabelą TAB3:

 SELECT /*+ ORDERED */ TAB1.COL1, TAB2.COL2, TAB3.COL3
     FROM TAB1, TAB2, TAB3
    WHERE TAB1.COL1 = TAB2.COL1
         AND TAB2.COL1 = TAB3.COL1;

Jeśli pominiesz wskazówkę ORDERED w instrukcji SQL wykonującej łączenie, optymalizator wybierze kolejność łączenia tabel. Możesz użyć podpowiedzi ORDERED, aby określić kolejność łączenia, jeśli wiesz coś o liczbie wierszy wybranych z każdej tabeli, której nie zna optymalizator. Takie informacje pozwolą ci wybrać tabelę wewnętrzną i zewnętrzną lepiej niż mógłby optymalizator.

Zwykle, jeśli analizujesz tabele, optymalizator wybiera efektywny plan gwiazdy. Możesz także skorzystać z podpowiedzi, aby ulepszyć plan. Najbardziej precyzyjną metodą jest uporządkowanie tabel w klauzuli FROM w kolejności kluczy w indeksie, z dużą tabelą na końcu. Następnie skorzystaj z następujących wskazówek:

/*+ ORDERED USE_NL(FACTS) INDEX(FACTS FACT_CONCAT) */


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykryć, czy użytkownik się wylogował w php?

  2. Baza danych kolumn Laravel Sum Eloquent

  3. MySQL dezaktywowany w Lampp, Xampp w Linuksie 12.04

  4. Dlaczego XAMPP nie nadaje się do produkcji?

  5. MySQL InnoDB Wyszukiwanie pełnotekstowe zawierające adres e-mail