sql >> Databáze >  >> RDS >> Mysql

Ovlivňuje pořadí tabulek v přímých spojeních bez direktiv nápovědy výkon?

Odpověď na vaši otázku - Ano, pořadí stolu rozhoduje o připojení.

Můžete také informovat optimalizátor o plánu provádění.

Nápověda ORDERED způsobí, že Oracle spojí tabulky v pořadí, ve kterém jsou uvedeny v klauzuli FROM.

Tento příkaz například spojí tabulku TAB1 s tabulkou TAB2 a poté připojí výsledek k tabulce TAB3:

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

Pokud z příkazu SQL provádějícího spojení vynecháte nápovědu ORDERED, optimalizátor vybere pořadí, ve kterém se mají tabulky spojit. Pokud víte o počtu řádků vybraných z každé tabulky něco, co optimalizátor nezná, můžete použít nápovědu ORDERED k určení pořadí spojení. Takové informace by vám umožnily vybrat vnitřní a vnější tabulku lépe než optimalizátor.

Obvykle, pokud analyzujete tabulky, optimalizátor vybere efektivní hvězdicový plán. Ke zlepšení plánu můžete použít také rady. Nejpřesnější metodou je seřadit tabulky v klauzuli FROM v pořadí klíčů v indexu, přičemž velká tabulka je poslední. Potom použijte následující rady:

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


  1. Příkaz CREATE byl odepřen pro uživatele, který má GRANT ALL PRIVILEGES

  2. Můžeme redistribuovat Oracle tools.jar?

  3. BIN() – Získá binární hodnotu čísla v MySQL

  4. Seřaďte podle řetězce posledních 2 znaků