Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data Bulan Lalu dengan Cekap dalam Pelayan SQL?

Bagaimana untuk Mendapatkan Data Bulan Lalu dengan Cekap dalam Pelayan SQL?

Barbara Streisand
Barbara Streisandasal
2025-01-05 06:31:40213semak imbas

How to Efficiently Retrieve Last Month's Data in SQL Server?

Cara Mendapatkan Rekod Bulan Lalu dalam SQL Server

Untuk mendapatkan rekod dari tempoh masa tertentu, amalan biasa adalah menggunakan pertanyaan julat dengan sempadan bawah dan atas yang inklusif. Walau bagaimanapun, pendekatan ini menimbulkan dua cabaran: menjejaskan penggunaan indeks dan berpotensi memilih data yang tidak diingini.

1. Penggunaan Indeks:

Menggunakan fungsi pada lajur yang dicari, termasuk fungsi tersirat seperti penghantaran, boleh memaksa pengoptimum untuk mengabaikan indeks pada lajur itu, menghasilkan carian linear melalui setiap rekod. Pertimbangkan cap masa, yang biasanya disimpan sebagai kiraan kronologi. Mengeluarkan bahagian tarikh daripada cap masa sedemikian memerlukan pengiraan yang rumit, memperlahankan pertanyaan.

2. Data Tidak Diinginkan:

Julat sempadan atas yang inklusif, seperti <=, boleh menyebabkan pemilihan data yang salah, bergantung pada versi SQL Server dan jenis data lajur. Data dari tengah malam pada hari berikutnya atau rekod daripada bahagian hari semasa mungkin tersilap dimasukkan atau dikecualikan.

Pendekatan Betul:

Untuk menangani isu ini, gunakan struktur pertanyaan berikut:

WHERE date_created >= @startOfPreviousMonth AND date_created < @startOfCurrentMonth

Untuk menentukan permulaan bulan sebelumnya dan semasa, gunakan yang berikut pengiraan:

@startOfPreviousMonth = DATEADD(month, -1, @startOfCurrentMonth)
@startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)

Pendekatan ini memastikan penggunaan indeks dan pemilihan data yang tepat. Skrip penuh ialah:

DECLARE @startOfCurrentMonth DATETIME
SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)

SELECT *
FROM Member
WHERE date_created >= DATEADD(month, -1, @startOfCurrentMonth)
AND date_created < @startOfCurrentMonth

Dengan melaksanakan operasi tarikh hanya sekali pada satu nilai, pengoptimum boleh memanfaatkan indeks dan pertanyaan mengembalikan data yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Bulan Lalu dengan Cekap dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn