1

Je stocke les dates d'événements du calendrier, y compris les événements récurrents. La table pourrait devenir énorme. La plupart de mes requêtes concernent des plages d'un mois (c'est-à-dire où eventstart> = '01/01/2001' et eventstop < = '31/01/2001'), donc je me fous du temps dans mes requêtes.Le type de date est-il plus performant que datetime pour les requêtes sur des jeux de données volumineux?

Est-ce que j'aurais de meilleures performances dans les requêtes de plage si j'interrogeais une colonne de date par rapport à une colonne datetime?

+3

Je ne sais pas, mais je dirais que oui, car il est à seulement 3 octets par rapport à 8 octets de 'DateTime'. Juste pour le compte rendu, vous avez également 'smalldatetime', qui est de 4 octets, et cela peut être une comparaison plus juste. – Andrew

+1

En outre, vos requêtes deviendraient plus prouvablement correctes. Dans votre exemple, 'where eventstart> = '1/1/2001' et eventstop <= '1/31/2001'' avec un type' datetime' vous pourriez manquer un événement le 31 janvier à 10h, disons, parce que votre range S'il ne s'agit que d'une colonne "date", votre requête sélectionnera toujours un événement en janvier. Donc, si vous n'avez pas besoin de stocker l'heure, le type 'date' présente d'autres avantages en plus de la vitesse et des besoins de stockage réduits. –

+0

@Andrew, smalldatetime n'est pas la norme ANSI et il est recommandé de ne pas l'utiliser. https://msdn.microsoft.com/en-us/library/ms182418.aspx – FLICKER

Répondre

1

Règle 1) Utilisez toujours la taille de données la plus petite possible pour la plus grande valeur possible.

http://www.sql-server-performance.com/2007/datatypes/

+0

Microsoft recommande de ne plus utiliser smalldatetime. https://msdn.microsoft.com/en-us/library/ms182418.aspx – FLICKER

+0

http://www.sql-server-performance.com/2007/datatypes/ – Vincent

+0

De plus, la question était la date ou l'heure de la date. Personne n'a mentionné la petite date, sauf toi. Mais bon, merci pour le vote à la baisse. – Vincent