首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

ADO.NET Entity Framework 查詢性能對比:三種方式孰優孰劣

     編輯:關於.NET

測試場景與方法

本文對比 Entity Framework 中三種查詢單個實體的方式:LINQ to Entities、Entity SQL、EntityKey。測試環境:Northwind 資料庫,查詢 CustomerID 為 "ALFKI" 的客戶,循環 1000 次計時。

第一部分:重複查詢同一實體 (1000 次)

方式一:LINQ to Entities

var data = (from c in context.Customers where c.CustomerID == "ALFKI" select c).FirstOrDefault();

耗時:約 6.2 秒

方式二:Entity SQL

var data = context.Customers.Where("it.CustomerID=@Id", new ObjectParameter("Id", "ALFKI")).FirstOrDefault();

耗時:約 6.2 秒

方式三:EntityKey 查詢

var data = context.GetObjectByKey(new EntityKey("NorthwindEntities.Customers", "CustomerID", "ALFKI")) as Customers;

耗時:約 1 秒

分析總結

前兩者每次皆查資料庫,1000 次耗時相同。EntityKey 僅第一次查資料庫,後 999 次從 Context 透過主鍵直接取物件,速度快數倍。EF 4.0 前實體含外鍵引用自動生成物件引用,EF 4.0 新增外鍵 ID,便於透過外鍵查詢。

第二部分:查詢不同實體 (各主鍵查一次)

先查出所有 CustomerID,再逐一查詢。

方式一:LINQ to Entities

耗時:約 0.68 秒

方式二:Entity SQL

耗時:約 0.5 秒

方式三:EntityKey

耗時:約 0.18 秒

最終結論

EntityKey 查詢效率顯著優於其他兩種,差距達數倍。日常開發中,若已知實體主鍵,應優先使用主鍵查詢 (GetObjectByKey 或 Find),避免 LINQ/Entity SQL 的查詢計劃開銷。本文未對比存儲過程,但結論明確:主鍵查詢為最高效路徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved