2009-11-13 5 views
0

J'ai une base de données SQL Server qui contient un grand nombre d'enregistrements de séries temporelles - actuellement environ 500 millions. Chaque enregistrement a une valeur datetime et une valeur de données double qui forment la série temporelle, et deux autres valeurs datetimes. Je cherche des moyens d'améliorer la performance des requêtes sans descendre dans la route de l'entrepôt de données. Au lieu de stocker les données et l'heure en tant que DateTime, je regardais le nouveau HierachyID dans SQL Server 2008 et je me demandais s'il serait possible de l'utiliser pour stocker la date et l'heure. J'imagine que la hierachie serait l'année, le mois, le jour, l'heure, la minute.Utilisation de HierachyID pour stocker des données de série chronologique

Cela donnerait-il des gains de performance et comment l'indexation fonctionnerait-elle?

+0

En y réfléchissant un peu plus, la maintenance d'une colonne HierachyID serait une vraie douleur. Il faudrait des déclencheurs pour mettre à jour l'enregistrement parent dans la hiérarchie qui se déclencherait récursivement. Une solution simple d'entreposage de données pourrait être meilleure. – Stewy

Répondre

0

J'en doute. De plus, cela rendrait la programmation beaucoup plus complexe. Votre index clusterisé est-il dans la colonne datetime? Quel genre de requêtes ont de mauvaises performances? De plus, comme vous ne semblez pas avoir besoin d'une précision inférieure à la minute, vous pouvez réduire la taille de vos pages d'index de 4 octets par ligne si vous passez à SMALLDATETIME. Lower I/O = meilleure performance.

+0

Merci. J'ai un index clusted sur la colonne datetime principale qui donne de bonnes performances. J'aurais dû mentionner que j'ai deux autres valeurs de datetime que j'indexe actuellement et je pensais aussi à celles-ci quand j'ai posé la question. – Stewy

Questions connexes