SQL 2014 – Création d’index inline

Vous n’êtes pas sans savoir que SQL Server 2014 permet maintenant de travailler avec les columnstore index en mise à jour. Avant, il fallait soit droper l’index soit jouer avec le switch de partitions.

Cela, ajouté à tout le InMémory (Hekaton) fait qu’une petite nouveauté de syntaxe est passé quasi inaperçu : la possibilité de créer un index en ligne, donc lors de la création de la table. Et que ce soit pour un index cluster ou non cluster pour une disk based table.

Auparavant, vous écriviez :

   1:  

   2: CREATE TABLE Person

   3: (

   4:     ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY NONCLUSTERED,

   5:     Name      varchar(50),

   6:     FirstName varchar(50),

   7: );

   8: GO

   9:  

  10: CREATE CLUSTERED INDEX CI_Name

  11: ON Person (Name);

  12: GO

  13:  

  14: CREATE NONCLUSTERED INDEX NCI_FirstName

  15: ON Person (FirstName);

  16: GO

Vous pourrez a présent écrire :

   1: CREATE TABLE PersonSQL2014

   2: (

   3:     ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY NONCLUSTERED,

   4:     Name      varchar(50) INDEX CI_Name       CLUSTERED,

   5:     FirstName varchar(50) INDEX NCI_FirstName NONCLUSTERED,

   6: );

   7: GO

Cool non ? Cela devrait raccourcir bien des scripts de mise en production.

Vous pourrez intégrer les options “WITH” et “ON” comme le stipule la documentation en ligne.

   1: <column_index> ::= 

   2:  INDEX index_name [ CLUSTERED | NONCLUSTERED ]

   3:     [ WITH ( <index_option> [ ,... n ] ) ]

   4:     [ ON { partition_scheme_name (column_name ) 

   5:          | filegroup_name

   6:          | default 

   7:          }

   8:     ] 

   9:     [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

 

Par contre, il ne sera pas possible de créer des index avec colonnes incluses ou des index filtrés sous ce formalisme. Il faudra revenir à une déclaration séparée.

Happy script shrinking ….

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM SQL Server 2008
Cet article, publié dans SQL Server, est tagué , . Ajoutez ce permalien à vos favoris.

2 commentaires pour SQL 2014 – Création d’index inline

  1. Bonjour Christophe et merci pour vos articles.

    A mon sens, l’intérêt majeur de ces créations d’index « INLINE » au delà de la simple expression syntaxique concerne les objets temporaires :
    – il est dorénavant possible de créer des index non clustered sur les variables table (@table) (mais toujours sans stats de distribution)
    – création sur les tables temporaires (#table) qui du coup permettent d’avoir des tables temporaires indexées et mise en cache (pas d’instruction DDL empêchant le caching).

    O.

  2. Ping : SQL 2014 – Création d'index inline...

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s