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
Lepaskan: 2025-01-05 06:31:40
asal
273 orang telah melayarinya

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
Salin selepas log masuk

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)
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan