66
Chapitre 4. Optimisation des objets et de la structure de la base de données
Pour SQL Server, ces deux dates correspondent au 1 er janvier 2008, minuit exactement (2008-01-01 00:00:00.000). Attention donc également aux comparaisons.
Puisque les types DATETIME et SMALLDATETIME contiennent toujours la partie heure,
une comparaison doit se faire aux 3 millisecondes, ou à la minute près. C’est un problème récurrent de performances, car il faut souvent convertir la valeur de la
colonne pour lui donner l’heure 00:00:00.000 dans la clause WHERE, ce qui empêche
toute utilisation d’index. Si vous savez que vous avez ce type de recherche à faire,
stockez systématiquement vos DATETIME avec la partie horaire à 0, ou créez une
colonne calculée indexée qui reprend la date seulement, et recherchez sur cette
colonne. Avec SQL Server 2008, le choix est plus étendu.
SQL Server 2008 ajoute plusieurs nouveaux types de données temporels :
• DATE – stocke seulement la date, sur trois octets ;
• TIME – stocke seulement la partie horaire. TIME est beaucoup plus précis que la
partie heure d’un DATETIME. Sa plage de valeurs va de 00:00:00.0000000 à
23:59:59.9999999. Sa précision est donc de 100 nanosecondes, sur trois à cinq
octets ;
• DATETIME2 – stocké sur huit octets, DATETIME2 permet une plus grande plage de
valeurs que DATETIME. Sa plage de dates va de 0001-01-01 à 9999-12-31, avec
une précision de temps (paramétrable) à 100 nanosecondes. Si vous diminuez
la précision, vous pouvez stocker un DATETIME2 sur six octets. Ce nouveau type
a été introduit principalement par compatibilité avec les dates .NET, et avec
la norme SQL ;
• DATETIMEOFFSET – basé sur un DATETIME2, DATETIMEOFFSET ajoute une zone
horaire. Codé sur huit à dix octets.
Pour éviter les problèmes en rapport avec les formats de dates liés aux langues,
passer les dates en ISO 8601 non séparé : 'AAAAMMJJ'.
Type XML
SQL Server 2005 a introduit le type de données XML, qui fait partie de la norme
SQL:2003. Une colonne ou variable XML peut contenir jusqu’à 2 Go d’instance XML
bien formée ou valide, codé en UTF-16 uniquement. Une colonne XML peut être
validée par une collection de schéma XSD (un schéma, dans le monde XML, est la
description de la structure d’un document XML. Le sujet en soi mériterait un
ouvrage). Voici un exemple de création de collection de schémas :
CREATE XML SCHEMA COLLECTION [Person].[AdditionalContactInfoSchemaCollection]
AS N' ...
'
Précédent

- 78/334

Suivant