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

MySQL Existuje omezení pro InnerJoin?

Pro MySQL nemáte nikde blízko limitu JOINů. Váš počet připojení není špatný. Připojování k odvozené tabulce (vašemu vnitřnímu poddotazu) však může způsobit problémy s výkonem, protože odvozené tabulky nemají indexy. Provádění spojení na odvozené tabulce bez indexů může být pomalé.

Měli byste zvážit vytvoření skutečné dočasné tabulky s indexy pro spojení nebo vymyslet způsob, jak se vyhnout poddotazu.

JOIN v MySQL je v podstatě jako vyhledávání (hledání) pro každý spojený řádek. Pokud tedy spojujete mnoho záznamů, MySQL bude muset provést mnoho vyhledávání. Problémem může být méně počet stolů, ke kterým se připojíte, než počet řádků, ke kterým se připojíte.

Každopádně MySQL provede jen tolik hledání, než to vzdá a jen přečte celou tabulku. Odvádí docela dobrou práci při rozhodování, co bude levnější.

Možná to nejlepší, co můžete udělat, je pomoci mu odhadnout tím, že aktualizujete statistiku indexu pomocí ANALYZE TABLE.

Pro každý SELECT můžete mít jednu klauzuli WHERE. Takže váš vnitřní poddotaz bude mít klauzuli WHERE a váš vnější dotaz bude mít klauzuli WHERE a ty se použijí po JOIN (alespoň logicky, ačkoli MySQL je obecně použije jako první kvůli výkonu).

To vše také za předpokladu, že víte, jak správně používat indexy.



  1. Úvod do datových typů MySQL

  2. Jak porozumět geografickému datovému typu serveru SQL Server

  3. Jak uložit databázi sqlite přímo na sdcard

  4. základní hromadná vložka pyodbc