2011-05-04 5 views
4

J'essaie d'accélérer une requête et je pense que je suis confus au sujet des index. Comment, et quel index devrais-je ajouter à cette table. L'ID est Unique, serait-ce un index primaire?Comment créer un index sur cette table temporaire?

CREATE TABLE #OSP 
    (
     [Id] UniqueIdentifier, 
     [YearMonth] int, 
     [Expenditure] decimal (7,2), 
     [Permit] decimal (7,2) 
    ); 
+0

Si vous interrogez par ID, alors oui, ce serait la clé primaire/index. Si vous ne l'utilisez pas pour interroger, l'index n'aidera pas ... – forsvarir

+0

Alors oui, c'est le bon index primaire/clé pour créer – forsvarir

Répondre

1

Si vous rejoignez sur id, alors créer un index sur ce serait utile.

Je pense que cela fonctionnerait:

CREATE TABLE #OSP 
    (
     [Id] UniqueIdentifier, 
     [YearMonth] int, 
     [Expenditure] decimal (7,2), 
     [Permit] decimal (7,2) 
    ); 


CREATE UNIQUE CLUSTERED INDEX [idx_id] ON #Osp ([Id] ASC) 
3

Vous pouvez spécifier le primary key dans votre déclaration create table.

CREATE TABLE #OSP 
    (
     [Id] UniqueIdentifier primary key, 
     [YearMonth] int, 
     [Expenditure] decimal (7,2), 
     [Permit] decimal (7,2) 
    ); 
+2

+1 Ceci est préféré car il rend la table '# temp' cacheable [et peut réduire le nombre de créations de table '# temp' (http://www.sqlservercentral.com/Forums/Topic510942-360-1.aspx) –

Questions connexes