Domanda

Abbiamo creato una vista indicizzata da tale sql:

Select Table1_ID, Count_BIG(*) as Table2TotalCount from Table2 inner join
Table1 inner join... where...

indice univoco anche dopo aver creato la vista, abbiamo impostato cluster colonna Table1_ID.
Così View è composta da due colonne:

Table1_ID
Table2TotalCount

Abbiamo due questioni:

  1. Se usiamo Count(1) o Count_BIG(1) invece di Count_BIG(*), SQL non ci permettono di indice impostato su Table1_ID
  2. Come possiamo controllare il tipo di seconda colonna (Table2TotalCount) - SQL Give A lunga annullabile digitare a questa colonna. Ma noi vogliamo insieme int non annullabile tipo a questa colonna. Dopo la creazione di vista, non riusciamo a trovare un modo per cambiare il tipo di colonna. Anche T-SQL che usiamo per la creazione di vista, sempre tornare a valori int Table2TotalCount .
È stato utile?

Soluzione

Si deve utilizzare COUNT_BIG (*). E 'una delle restrizioni sui creare una vista indicizzata :

L'istruzione SELECT nella visualizzazione non può contenere i seguenti elementi di sintassi Transact-SQL:

  • COUNT (COUNT_BIG (*) è consentita.)

Si potrebbe creare una seconda vista che non è indicizzato, che i riferimenti questa prima vista, e getta il tipo di dati della colonna conteggio al tipo desiderato (e, eventualmente, utilizza un ISNULL () per impedire che la proprietà nullable)

Altri suggerimenti

  1. Questo è probabilmente perché si contano su un'espressione invece di un campo o *. Utilizzando count(1) dà lo stesso risultato come count(*), cioè contando il numero di record, quindi non v'è alcun motivo per uso count(1).

  2. L'uso count invece di count_big per ottenere int invece di bigint (lungo). (La documentazione specificamente dice che l'unica differenza tra loro è il tipo di ritorno.) Non so il motivo per cui il valore è annullabile come count mai restituisce null, ma che potrebbe essere la stessa per tutti gli aggregati, e, probabilmente, non è possibile il controllo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top