SORU
24 Temmuz 2009, Cuma


En iyi zaman SQL Server datetime parçası kaldırmak için bir yaklaşım

Hangi yöntem SQL Server datetime alanı zaman bölümü kaldırmayı zaman en iyi performansı sağlar?

a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)

ya

b) select cast(convert(char(11), getdate(), 113) as datetime)

İkinci yöntem ama bu dönüşüm hızı kadar önemli olmayabilir birkaç bayt ya da bir şekilde gönderin.

Hem de çok hızlı görünüyor, ama yüzlerce-binlerce veya daha fazla satır ile ilgili hız farkı olabilir?

SQL datetime saat kısmını kurtulmak için daha iyi bir yöntem vardır o da mümkün mü?

CEVAP
24 Temmuz 2009, Cuma


Kesinlikle, yöntem a az yoğun kaynak:

a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)

Daha az CPU yoğun elleri ile çok fazla zaman bazı biri tarafından bir milyon satır aynı toplam süre için kanıtlanmış: Most efficient way in SQL Server to get date from date time?

Benzer bir testi başka bir yerde benzer sonuçlar da gördüm.

ÖNCESİ/TA çünkü tercih ederim:

Düzenleme, Ekim 2011

SQL Server 2008 , date çevirebilirsiniz. Ya da sadece kaldırmak için hiçbir zaman bu kadar date kullanın.

Düzenleme, Jan 2012

Ne kadar esnek bu işe yaradı bir örnek: Need to calculate by rounded time or date figure in sql server

Düzenleme, Mayıs 2012

NEREYE düşünmeden maddeleri ve benzeri: bu kullanmayın dizin kullanımı geçersiz kılar. bir sütun için bir işlev veya DÖKME ekleme Bakın burada 2 sayısı: http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/

Şimdi, bunu daha sonra SQL Server geliştirici sürümü örneği bugüne kadar doğru, ama DÖKME yönetmek vargenelliklebu iyi bir fikir olabilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Erica Griffin

    Erica Griffi

    8 HAZİRAN 2009
  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • joshsnice

    joshsnice

    28 Kasım 2006