Saya punya permintaan seperti ini
SELECT
[EstimateId],
[CreationUserId],
[EstimateStatusValueId],
[LanguageId],
[LocationId],
[EstimatorUserId],
[FilterUnitSystemTypeId],
[EstimateNumber],
[RevisionNumber],
[CreationDate],
[ModificationDate],
[ProjectDescription],
[IsBsdq],
[ClosingDate],
[ClosingTime],
[ClosingUpdatedOn],
[DeadLineDate],
[IsReceived],
[Inclusion],
[Exclusion],
[Misc],
[Note],
[WorkDeadLines],
[Comments],
[Validity],
[PlansLocation],
[PlansReceivedFrom],
[Price]
FROM [Estimate].[Estimates]
ORDER BY [ClosingDate] ASC, [ClosingTime] ASC
Ketika saya menjalankan kueri ini di SSMS saya mendapatkan waktu pelaksanaan 953ms, tetapi ketika saya menjalankan kueri ini dari Linq Query di C # saya mendapatkan waktu pelaksanaan 1813ms.
Kueri Linq menggunakan ".Net SqlClient Data Provider" dan dikeluarkan terhadap EntityFramework (file EDMX). Apakah ini bisa menjadi masalah?
Adakah yang tahu mengapa saya memiliki perbedaan besar antara waktu eksekusi permintaan yang sama tetapi mengeksekusi dari konteks yang berbeda terhadap database yang sama?
Saya memverifikasi semua rencana eksekusi dari kedua permintaan dan mereka menggunakan indeks yang sama untuk memenuhi permintaan mereka masing-masing.
Untuk melihat rencana eksekusi permintaan C # saya menggunakan profiler SQL untuk menjebak acara Show Plan XML dan saya membandingkannya dengan salah satu SSMS dan keduanya sama.
Jawaban:
Apakah ini konsisten, berkali-kali?
Saya melihat perbedaan CPU yang bisa jadi waktu kompilasi. Apakah ada pengaturan LINQ yang memengaruhi ini?
Edit:
sumber
Saya pikir masalahnya ada pada penggunaan file EDMX untuk menghasilkan pertanyaan dari aplikasi C #.
Saya menemukan tautan yang menjelaskan kasus itu.
Proyek Kode
Stackoverflow-1
Stackoverflow-2
sumber
Anda akan ingin melihat rencana Eksekusi untuk dua pertanyaan dan melihat di mana mereka berbeda.
sumber