3. EF6 - 按需Select performance

本文使用LINQPad 6说明select语句性能问题。

    Customers.Where(x => x.City.Contains("London"))
    .ToDictionary(c => c.CustomerID, c => c.ContactName);
    
    Customers.Where(x => x.City.Contains("London"))
        .Select(x => new { x.CustomerID, x.ContactName })
        .ToDictionary(c => c.CustomerID, c => c.ContactName);

对应的sql语句为

exec sp_executesql N'SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], 
[t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax], [t0].[ParentCompanyID]
FROM [Customers] AS [t0]
WHERE [t0].[City] LIKE @p0',N'@p0 nvarchar(4000)',@p0=N'%London%'

exec sp_executesql N'SELECT [t0].[CustomerID], [t0].[ContactName]
FROM [Customers] AS [t0]
WHERE [t0].[City] LIKE @p0',N'@p0 nvarchar(4000)',@p0=N'%London%'

区别:使用select语句能够减少返回的column,提高性能,尤其在某些column数据本身很大的情况,例如保存image的column

实际应用程序中,大多不会使用匿名类型,而是返回具体的类型,可以创建新的类,配合automapping。 或者使用原始查询,或者自己在ado.net上进行封装开发类似的库。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 初识MySQL 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 数据类型 1.1...
    _Cappuccino_阅读 14,314评论 0 0
  • 介绍 什么是SQLMicrosoft SQL Server(微软结构化查询语言服务器)是由美国微软公司所推出的关系...
    异步木依阅读 2,750评论 0 1
  • 数据库  数据库(DB)是存放数据的仓库,只不过这些数据的存在有一定的关联,并且按照一定的格式存放在计算机上面,这...
    小任务大梦想阅读 2,817评论 0 0
  • 答案,正式使用前请祛除答案以及选项的红色颜色! 1:C2:C3:D4:D5:B 6:B7:D8:B9:A10:D ...
    程序媛_阅读 3,349评论 0 0
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 4,874评论 0 4