Saya hanya perlu mengkonfirmasi bahwa saya memahami sesuatu dengan benar:
Saya baru-baru ini melihat pertanyaan SO di mana pengguna memposting jawaban di Linq seperti:
from p in db.table where p.column.AddMinutes(1) > DateTime.Now select p
Bagi mereka yang tidak terbiasa dengan Linq, saya akan mengharapkan output dari pernyataan itu (tidak diuji dalam keadilan) menjadi:
SELECT *
FROM table t
WHERE DATEADD(min, 1, t.column) >= GETDATE()
Saya memposting balasan untuk pepatah ini bahwa manipulasi datetime harus pada variabel (dalam hal ini GETDATE()
) sehingga sebenarnya pernyataan tersebut harus mencerminkan sesuatu seperti:
SELECT *
FROM table t
WHERE t.column >= DATEADD(min, -1, GETDATE())
Dalam balasan saya, bit yang sekarang saya tidak yakin, asumsikan sebagai berikut:
- Indeks tidak akan digunakan karena manipulasi kolom
- Paket kueri akan berbeda sebagian karena hal di atas (tidak diuji, dengan asumsi demikian)
- Karena hal di atas, permintaan 1 sebenarnya akan berkinerja lebih buruk daripada permintaan ke-2.
Pertanyaan saya:
Apakah saya melewatkan sesuatu dalam alasan saya? Apakah saya benar? Terakhir, apakah ada badan yang memiliki artikel bagus tentang SARGability?
sumber