Sdílet prostřednictvím


Osvědčené postupy optimalizace schématu

Schéma tabulky definuje názvy a datové typy všech sloupců v tabulce. Schéma tabulky lze nastavit během vytváření tabulky nebo jako součást procesu příjmu dat úpravou příslušného mapování příjmu dat. Způsob definování schématu tabulky může výrazně ovlivnit výkon dotazů. Ideální schéma pro vaše data závisí na mnoha faktorech, včetně případů použití, vzorů přístupu k datům a konkrétních dat, která plánujete uložit. Tento článek popisuje osvědčené postupy pro optimalizaci výkonu návrhem efektivních schémat.

Datové typy

Obecné informace o datových typech najdete v tématu skalární datové typy.

  • Běžně používaná pole by měla být zadávat sloupce, nikoli dynamický typ.

  • Často hledané nebo agregované vlastnosti JSON v dynamickém sloupci by se měly převést na běžný sloupec v tabulce s konkrétnějším typem, jako je řetězec, dlouhý nebo skutečný.

  • Řídké sloupce, které se běžně nepoužívají pro filtrování a agregaci, by se měly shromažďovat jako taška vlastností v dynamickém sloupci pomocí DropMappedFields transformace mapování.

  • Sloupce data a času by měly být zadány jako datum a čas, nikoli jako dlouhé nebo jiné datové typy.

    • Použijte například DateTimeFromUnixMillisecondsdata a čas z mapování transformací unixu. .
  • Desetinný typ poskytuje přesnou přesnost, díky čemuž je nejvhodnější pro finanční a další aplikace, které vyžadují přesnou přesnost. Je ale mnohem pomalejší než skutečný typ. V případě potřeby používejte pouze desetinný typ.

  • Všechny sloupce ID (identifikace) by měly být zadány jako řetězec, ne jako číselné. Díky tomuto typu bude index mnohem efektivnější a může výrazně zlepšit dobu hledání. Umožní také dělení, protože dělení je možné definovat pouze u řetězcových sloupců. Pokud filtry dotazu použité v tomto sloupci jsou pouze rovnost, například pokud sloupec obsahuje identifikátory GUID, můžete použít profil Identifierkódování . Další informace najdete v tématu Zásady kódování.

Tabulky

  • Optimalizujte úzké tabulky, které jsou upřednostňované oproti širokým tabulkám se stovkami sloupců.
  • Abyste se vyhnuli nákladným spojením během doby dotazu, denormalizovat data dimenzí tím, že je během příjmu dat obohacuje. Pokud je tabulka dimenzí používaná pro rozšiřování aktualizována a scénář vyžaduje nejnovější hodnotu, použijte materializovat zobrazení , abyste zachovali pouze nejnovější hodnotu.
  • Pokud existuje více než 20 sloupců, které jsou zhuštěné, což znamená, že mnoho hodnot je null a tyto sloupce se zřídka používají pro vyhledávání nebo agregaci, seskupte sloupce jako tašku vlastností JSON do dynamického sloupce pomocí DropMappedFields mapování transformace.

Indexování

Pole, která se nikdy nevyhledají, můžou zakázat indexování. Pomocí zásad kódování s profilem BigObject zakažte indexování řetězců nebo dynamických sloupců.