Procedure consigliate per l'ottimizzazione dello schema

Uno schema di tabella definisce i nomi e i tipi di dati di tutte le colonne della tabella. Lo schema della tabella può essere impostato durante la creazione della tabella o come parte del processo di inserimento dei dati modificando il mapping di inserimento applicabile. Il modo in cui viene definito uno schema di tabella può influire in modo significativo sulle prestazioni delle query. Lo schema ideale per i dati dipende da molti fattori, tra cui casi d'uso, modelli di accesso ai dati e dati specifici che si prevede di archiviare. Questo articolo descrive le procedure consigliate per ottimizzare le prestazioni progettando schemi efficienti.

Tipi di dati

Per informazioni generali sui tipi di dati, vedere Tipi di dati scalari.

  • I campi comunemente usati devono essere colonne tipizzate, non di tipo dinamico .

  • La ricerca frequente o le proprietà JSON aggregate in una colonna dinamica devono essere convertite in una colonna regolare nella tabella con un tipo più specifico, ad esempio string, long o real.

  • Le colonne di tipo sparse che non vengono comunemente usate per il filtro e l'aggregazione devono essere raccolte come contenitore di proprietà in una colonna dinamica usando la trasformazione mappingDropMappedFields.

  • Le colonne di data e ora devono essere digitate come datetime e non lunghe o altri tipi di dati.

  • Il tipo decimale fornisce precisione esatta, che lo rende più adatto a applicazioni finanziarie e altre applicazioni che richiedono precisione esatta. Tuttavia, è molto più lento del tipo reale . Usare solo il tipo decimale quando necessario.

  • Tutte le colonne ID (identificazione) devono essere digitate come stringa, non numeriche. Questo tipo rende l'indice molto più efficace e può migliorare significativamente il tempo di ricerca. Abiliterà anche il partizionamento, poiché il partizionamento può essere definito solo sulle colonne stringa. Se i filtri di query usati in questa colonna sono uguali solo, ad esempio se la colonna contiene GUID, è possibile usare il profilo Identifierdi codifica . Per altre informazioni, vedere Criteri di codifica.

Tabelle

  • Ottimizzare per le tabelle strette, che sono preferibili rispetto alle tabelle estese con centinaia di colonne.
  • Per evitare join costosi durante il tempo di query, denormalizzare i dati delle dimensioni arricchiscendoli durante l'inserimento. Se la tabella delle dimensioni utilizzata per l'arricchimento viene aggiornata e lo scenario richiede il valore più recente, usare le viste materializzate per mantenere solo il valore più recente.
  • Se sono presenti più di 20 colonne di tipo sparse, ovvero molti valori sono Null e queste colonne vengono usate raramente per le ricerche o le aggregazioni, raggruppare le colonne come contenitore di proprietà JSON in una colonna dinamica usando il mapping della DropMappedFieldstrasformazione.

Indicizzazione

I campi su cui non viene mai eseguita la ricerca possono disabilitare l'indicizzazione. Usare i criteri di codifica con il profilo BigObject per disabilitare l'indicizzazione su colonne di tipo stringa o dinamiche.