Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Amikor megkísérli végrehajtani a lekérdezést, a lekérdezési folyamat megkeresi a lekérdezésterv gyorsítótárát, hogy lássa, a pontos lekérdezés már lefordítva és elérhető-e. Ha igen, a gyorsítótárazott tervet használja újra, nem pedig egy újat. Ha nem található egyezés a lekérdezésterv gyorsítótárában, a rendszer lefordítja és gyorsítótárazza a lekérdezést. A lekérdezést az Entity SQL-szöveg- és paramétergyűjtemény (nevek és típusok) azonosítja. Minden szöveg-összehasonlítás megkülönbözteti a kis- és nagybetűket.
Konfiguráció
A lekérdezésterv gyorsítótárazása konfigurálható a EntityCommand.
A lekérdezésterv gyorsítótárazásának engedélyezéséhez vagy letiltásához EntityCommand.EnablePlanCachingállítsa ezt a tulajdonságot a következőre true : vagy false. A terv gyorsítótárazásának letiltása az egyes dinamikus lekérdezések esetében, amelyek nem valószínű, hogy többet fognak használni, majd egyszer javítják a teljesítményt.
Engedélyezheti a lekérdezésterv gyorsítótárazását a EnablePlanCaching.
Ajánlott eljárás
A dinamikus lekérdezéseket általában kerülni kell. Az alábbi dinamikus lekérdezési példa sebezhető az SQL-injektálási támadásokkal szemben, mivel közvetlenül, ellenőrzés nélkül veszi igénybe a felhasználói bemenetet.
var query = "SELECT sp.SalesYTD FROM AdventureWorksEntities.SalesPerson as sp WHERE sp.EmployeeID = " + employeeTextBox.Text;
Ha dinamikusan generált lekérdezéseket használ, fontolja meg a lekérdezésterv gyorsítótárazásának letiltását, hogy elkerülje a szükségtelen memóriahasználatot az olyan gyorsítótár-bejegyzések esetében, amelyek nem valószínű, hogy újra felhasználhatók.
A statikus lekérdezéseken és a paraméteres lekérdezéseken a lekérdezésterv gyorsítótárazása teljesítménybeli előnyöket biztosíthat. A következő példa egy statikus lekérdezésre:
var query = "SELECT sp.SalesYTD FROM AdventureWorksEntities.SalesPerson as sp";
Ahhoz, hogy a lekérdezési terv gyorsítótára megfelelően megfeleltethesse a lekérdezéseket, meg kell felelniük a következő követelményeknek:
A lekérdezés szövegének állandó mintának kell lennie, lehetőleg állandó sztringnek vagy erőforrásnak.
EntityParameter vagy ObjectParameter ott kell használni, ahol a felhasználó által megadott értéket át kell adni.
Kerülje a következő lekérdezési mintákat, amelyek szükségtelenül használnak tárolóhelyeket a lekérdezésterv gyorsítótárában:
Betűs kis- és nagybetűk módosítása a szövegben.
Térköz módosítása.
A literális értékek módosítása.
Megjegyzések szövegének módosítása.