Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan Ungkapan Tarikh SQL Server 2008 Lebih Lambat Daripada Pertanyaan Literal Rentetan?

Mengapa Pertanyaan Ungkapan Tarikh SQL Server 2008 Lebih Lambat Daripada Pertanyaan Literal Rentetan?

Linda Hamilton
Lepaskan: 2024-12-30 07:23:13
asal
266 orang telah melayarinya

Why Are SQL Server 2008 Date Expression Queries Slower Than String Literal Queries?

Pertanyaan Ungkapan Tarikh: Lebih Pantas dengan Huruf Rentetan

Pertanyaan yang menggunakan ungkapan tarikh dalam keadaannya, seperti yang dilihat dalam contoh berikut, selalunya menunjukkan perlahan prestasi dalam SQL Server 2008:

Where FK.DT = CAST(DATEADD(m, DATEDIFF(m, 0, getdate()), 0) as DATE)  
Salin selepas log masuk

Walau bagaimanapun, telah diperhatikan bahawa menggantikan ungkapan tarikh dengan rentetan literal, seperti '2013-05-01', menghasilkan pelaksanaan pertanyaan yang jauh lebih pantas. Percanggahan ini telah membingungkan ramai pembangun.

Perbezaan prestasi timbul daripada pepijat dalaman dalam SQL Server 2008 yang mempengaruhi cara ia menganggarkan kardinaliti hasil apabila ungkapan tarikh digunakan. Apabila dibentangkan dengan ungkapan tarikh seperti yang terdapat dalam soalan, SQL Server tersilap mengandaikan bahawa ia mewakili nilai malar sepadan dengan tarikh pertama dalam bulan yang ditentukan. Ini membawa kepada anggaran kardinaliti yang tidak tepat, mengakibatkan rancangan pertanyaan yang tidak cekap.

Sebaliknya, menggunakan rentetan literal untuk nilai tarikh, memaksa SQL Server untuk menghadapi nilai sebenar pada masa jalan dan memperoleh anggaran kardinaliti yang lebih tepat. Ini membolehkan pengoptimum menjana pelan pertanyaan yang lebih optimum, yang membawa kepada pelaksanaan yang lebih pantas.

Untuk memintas pepijat ini, seseorang boleh menggunakan ungkapan alternatif berikut:

Where FK.DT = cast(getdate() + 1 - datepart(day, getdate()) as date)
Salin selepas log masuk

Ungkapan ini mengembalikan pemalar nilai tarikh yang mewakili hari pertama bulan semasa, yang sejajar dengan gelagat pertanyaan yang dimaksudkan. Dengan penggantian ini, pengoptimum boleh menganggarkan kardinaliti dengan tepat dan menghasilkan pelan pertanyaan yang lebih cekap, menyelesaikan kesesakan prestasi yang dikaitkan dengan ungkapan tarikh.

Atas ialah kandungan terperinci Mengapa Pertanyaan Ungkapan Tarikh SQL Server 2008 Lebih Lambat Daripada Pertanyaan Literal Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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