Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data Bulan Lalu dengan Cekap dalam Pelayan SQL?
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 < @startOfCurrentMonthDengan 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!