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

Když máte pole TEXT v MySQL nebo PostgreSQL, měli byste ho umístit do samostatné tabulky?

Ne s PostgreSQL, z příručky :

Tedy velký sloupec znaků (například TEXT nebo VARCHAR bez zadaného limitu velikosti) jsou uloženy mimo data hlavní tabulky. PostgreSQL má tedy vestavěnou optimalizaci „umísti to do samostatné tabulky“. Pokud používáte PostgreSQL, uspořádejte si tabulku rozumně a rozvržení dat ponechte na PostgreSQL.

Nevím, jak MySQL nebo jiné RDBM uspořádají svá data.

Důvodem této optimalizace je to, že databáze bude obvykle uchovávat data pro každý řádek v souvislých blocích na disku, aby se omezilo hledání, když je třeba řádek přečíst nebo aktualizovat. Pokud máte v řádku sloupec TEXT (nebo jiný typ s proměnnou délkou), pak je velikost řádku proměnná, takže přechod z řádku na řádek je třeba více práce. Analogií by byl rozdíl mezi přístupem k něčemu v propojeném seznamu a přístupem k poli; u propojeného seznamu musíte číst tři prvky jeden po druhém, abyste se dostali ke čtvrtému, s polem stačí odsadit 3 * element_size bajtů od začátku a jste tam v jednom kroku.



  1. Jedinečné omezení Oracle a jedinečný index

  2. Smyčka přes dimenzi pole v plpgsql

  3. Jak vytvořit databázi pro více tenantů se sdílenými strukturami tabulek?

  4. Jak importovat excelový soubor do MySQL Workbench?