1

Ich speichere Kalendertermine, einschließlich wiederkehrender Ereignisse. Der Tisch könnte riesig werden. Die meisten meiner Anfragen beziehen sich auf Bereiche eines Monats (d. H. Wo eventstart> = '1/1/2001' und eventstop < = '31.01.2001'), so dass mir die Zeit in meinen Fragen nicht so wichtig ist.Ist der Dateityp für Abfragen in großen Datasets leistungsfähiger als datetime?

Würde ich bei Bereichsabfragen eine bessere Leistung erzielen, wenn ich eine Datumsspalte im Vergleich zu einer Datetime-Spalte abgefragt hätte?

+3

Ich weiß nicht, aber ich würde sagen, ja, da es nur 3 Bytes ist im Vergleich zu 8 Byte 'datetime'. Nur für die Aufzeichnung, Sie haben auch 'smalldatetime', die 4 Bytes ist, und das kann ein fairer Vergleich sein. – Andrew

+1

Auch Ihre Abfragen würden mehr nachweislich korrekt werden. In Ihrem Beispiel, where eventstart> = '1/1/2001' und eventstop <= '31/31/2001' 'mit dem Typ' datetime 'könnten Sie ein Event am 31. Januar um 10:00 Uhr verpassen, zum Beispiel wegen Ihrer Reichweite geht nur bis Mitternacht am Morgen des 31. Januar. Wenn es eine "Datum" -Spalte wäre, würde Ihre Abfrage immer ein Ereignis im Januar auswählen. Wenn Sie also die Zeit nicht speichern müssen, gibt es andere Vorteile für den Typ "Datum" neben der Geschwindigkeit und den kleineren Speicheranforderungen. –

+0

@Andrew, smalldatetime ist kein ANSI-Standard und es wird empfohlen, ihn nicht zu verwenden. https://msdn.microsoft.com/en-us/library/ms182418.aspx – FLICKER

Antwort

1

Regel 1) Verwenden Sie immer die kleinste Datengröße für den größtmöglichen Wert.

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

+0

Microsoft empfiehlt, smalldatetime nicht mehr zu verwenden. https://msdn.microsoft.com/en-us/library/ms182418.aspx – FLICKER

+0

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

+0

Plus war die Frage Datum oder Datum Zeit. Niemand hat eine kleine Zeitangabe außer dir erwähnt. Aber hey, danke für die Abstimmung. – Vincent