Condividi tramite


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 dati modificando il mapping di inserimento applicabile. Il modo in cui viene definito uno schema di tabella può influire significativamente 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 da archiviare. Questo articolo descrive le procedure consigliate per ottimizzare le prestazioni progettando schemi efficienti.

Tipo 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 DropMappedFields trasformazione mapping.

  • 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 renderà l'indice molto più efficace e può migliorare significativamente il tempo di ricerca. Abiliterà anche il partizionamento, poiché il partizionamento può essere definito solo nelle 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 le tabelle strette, che sono preferibili rispetto alle tabelle wide 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, utilizzare le visualizzazioni materializza 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 l'aggregazione, raggruppare le colonne come contenitore di proprietà JSON in una colonna dinamica usando il mapping della DropMappedFields trasformazione.

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 in colonne di tipo stringa o dinamiche.