datetime
MedanMengekstrak hanya bahagian tarikh daripada medan SQL Server datetime
ialah tugas biasa. Dua pendekatan lazim dibandingkan di sini untuk kecekapan:
Kaedah A:
<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
Kaedah B:
<code class="language-sql">SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>
Tanda Aras Prestasi
Walaupun kedua-dua kaedah secara amnya pantas, Kaedah A secara konsisten menunjukkan prestasi unggul, terutamanya dengan set data yang lebih besar. Ujian pada set data sejuta baris mendedahkan penggunaan CPU yang jauh lebih rendah menggunakan Kaedah A, menyerlahkan kecekapannya.
Faktor Tambahan
Melebihi kelajuan, pertimbangan lain mempengaruhi pemilihan kaedah:
CONVERT
kepada CHAR
memperkenalkan potensi isu dengan format tarikh khusus setempat.FLOAT
secara dalaman, yang mungkin mempunyai implikasi storan.SQL Server 2008 dan Kemudian
Untuk SQL Server 2008 dan versi seterusnya, fungsi CAST
menawarkan alternatif yang diperkemas:
<code class="language-sql">CAST(GETDATE() AS DATE)</code>
Pendekatan ini cekap dan secara langsung mengembalikan DATE
jenis data.
Pengoptimuman Indeks
Yang penting, penggunaan fungsi atau operasi CAST
dalam klausa WHERE
boleh menghalang penggunaan indeks, memberi kesan kepada prestasi pertanyaan. Elakkan amalan sedemikian apabila mungkin untuk mengekalkan kelajuan pertanyaan yang optimum.
Pengesyoran
Memandangkan prestasi dan kebolehsuaian, kaedah yang disyorkan untuk mengalih keluar komponen masa daripada medan datetime
dalam SQL Server ialah:
<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Bahagian Masa dengan Cekap dari Medan Datetime SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!