位置: 编程技术 - 正文

LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题(sql clean)

编辑:rootadmin

如果表中的字段类型为 char(1) 时,Linq to SQL生成char (System.Char)的属性,如下图

表定义生成的实体

2.

如果要查询LineCode=='A'的记录,可以这样定义Linq查询语句

var test1 = from p in db.ProductLines where p.LineCode =='A' select p;

生成的SQL语句是这样的

SELECT [t0].[LineCode], [t0].[LineName], [t0].[JPH], [t0].[QueueCount]FROM [dbo].[ProductLine] AS [t0]WHERE UNICODE([t0].[LineCode]) = @p0-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) []-- Context: SqlProvider(Sql) Model: AttributedMetaModel Build: 3.5..8

注意到Where语句了吗?是WHERE UNICODE([t0].[LineCode]) = ,这里先取LineCode列内容的UNICODE再和'A'的UNICODE比较。我们知道'A'和'a'的UNICODE是不同的。UNICODE('A') =,UNICODE('a')=,也就是说,我们在Linq to SQL中这二个查询的结果是不一样的。

Linq 语句var test1 = from p in db.ProductLines where p.LineCode =='a' select p;var test1 = from p in db.ProductLines where p.LineCode =='A' select p;生成SQL语句SELECT [t0].[LineCode], [t0].[LineName], [t0].[JPH], [t0].[QueueCount]FROM [dbo].[ProductLine] AS [t0]WHERE UNICODE([t0].[LineCode]) = @p0-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) []SELECT [t0].[LineCode], [t0].[LineName], [t0].[JPH], [t0].[QueueCount]FROM [dbo].[ProductLine] AS [t0]WHERE UNICODE([t0].[LineCode]) = @p0-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) []

明显,在Linq to sql是查询char(1)类型字段是区分大小写的。

这还会导致一个比较严重的问题,我们知道在SQL Server中,任何在运算符左边的操作都会使SQL采用全表扫描。也就是说,Linq的这个查询,会引起全表扫描,即使[LineCode]列上定义了聚合索引。而如果是where [linecode]='A',则可以使用索引。我们看下这二种情况时的查询执行计划对比。

图中可以看出,Linq to SQL 生成的SQL语句是表扫描,而后者则是索引查找。

3.

对策

在DBML设计器中将LineCode改成string类型。

看一下改了之后的查询

var test1 = from p in db.ProductLines where p.LineCode == "a" select p;SELECT [t0].[LineCode], [t0].[LineName], [t0].[JPH], [t0].[QueueCount]FROM [dbo].[ProductLine] AS [t0]WHERE [t0].[LineCode] = @p0-- @p0: Input VarChar (Size = 1; Prec = 0; Scale = 0) [a]-- Context: SqlProvider(Sql) Model: AttributedMetaModel Build: 3.5..8Linqsql

改为string后,生成的SQL不再用UNICODE函数了,就解决了区分大小写和引起全表扫描的问题。但又引起一个新的问题,因为数据库中存储的数据长度是1,在Insert和Update时就要注意,LineCode不要输入过长的内容,否则会出错了。

推荐整理分享LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题(sql clean),希望有所帮助,仅作参考,欢迎阅读内容。

LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题(sql clean)

文章相关热门搜索词:sqlallochandle on sql_handle,sql clean,sqlallochandle on sql_handle,sqlallochandle on sql_handle,linq到sql是对什么进行操作,sql following,sqlallochandle on sql_handle,linq到sql是对什么进行操作,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL中改名和删除默认sa帐号的最安全方法 这个sa一般情况下是既不可以更改名称,也不可以删除,呵呵,有点鸡肋的味道,弃置可惜,食之无味。在偶装上sql之后,感觉总之怪怪的,放着这

mssql SA帐号的改名和删除 呵呵,前面说拉那么半天废话,可能你已经看的不耐烦拉,好,这就说道正题,大家跟着我来一起把sa给大卸八块首先打开SQL中的企业管理器,接着在工

SQLServer中master数据库分析 表sysdatabases:保存DBMS中数据库信息select[name]from[sysdatabases]orderby[name]就能得到该DBMS中的数据库信息表sysobjects:保存数据库中数据表信息con.ChangeDatabase(DBN

标签: sql clean

本文链接地址:https://www.jiuchutong.com/biancheng/348450.html 转载请保留说明!

上一篇:一条语句简单解决“每个Y的最新X”的经典sql语句(一条的句子怎么写)

下一篇:SQL2000中改名和删除默认sa帐号的最安全方法(sql2000怎么修改默认实例名)

  • 增值税普通发票税率
  • 工资个税计提多了实际交的少
  • 自然人管理系统银行信息
  • 劳务派遣怎么做起来
  • 企业政府性征地补偿款如何合法使用
  • 取得出口退税款算什么收入
  • 承租人融资租赁设备长期应付款包括租赁资产担保余值
  • 利润是负数如何计算利润率
  • 影视公司招演员
  • 个体工商户年末计提的工资,次年怎么算
  • 建筑业预缴附加税分录
  • 月末结转增值税附加税的账务处理
  • 装卸费收取的税收筹划是怎样的?
  • 跨区经营的税务政策
  • 会计账目怎么理
  • 购买工装的进项能抵扣吗
  • 建筑工程劳务费占比例
  • 应收账款的差额计入哪里
  • 小型微利企业免税政策
  • bios中如何关闭cd/dvd
  • 如何加快身体的新陈代谢
  • php上传大文件失败
  • PHP+Mysql+jQuery中国地图区域数据统计实例讲解
  • winrar压缩后生成的文件格式
  • php数组函数题目
  • rk3328 sdk
  • kb4586853更新
  • php 函数返回值
  • 海浪冲击着海岸
  • 废旧物资回收企业所得税优惠政策
  • 邮电通信企业业务收入包括哪些内容?
  • 专家评审费发放新规定2023
  • 用python编写
  • js监听事件和处理事件
  • python创建自定义函数
  • 公司请的临时工
  • 提取现金准备发放工资
  • phpcms rce
  • 境外企业在境内投资是否备案
  • 佣金怎么收税
  • 进口商品采购流程及时间
  • Windows下Postgresql数据库的下载与配置方法
  • 普通发票的后续怎么开
  • 往来账款应该怎么记账
  • 什么叫做有限循环小数
  • 分期购车会计分录小规模
  • 员工工资怎么计提
  • 购买银行理财产品的几个必须知道
  • 不动产进项税额转出
  • 公司买房代替房贷合法吗
  • 水利建设基金的征税对象
  • 买入返售金融资产 流动资产
  • 会计基础知识归纳大全
  • 开红字发票需要具备什么条件
  • MySQL创建数据库字符集和排序规则
  • mysql安装时出现的问题
  • mysql 优化口诀
  • 苹果电脑怎么打开u盘
  • centos6.5dns配置
  • xp怎么安全模式
  • win8系统搜索在哪里
  • windows8音频服务尚未启用 怎么解决
  • win7出现蓝屏怎么办
  • windows8用的人少
  • window10外接摄像头怎么启用
  • onclick和onclientclick
  • jquery1
  • 入门级啥意思
  • javascript几种数据类型
  • 粒子form
  • js异步编程的四种方法
  • Python中random模块
  • jquery给输入框赋值
  • python入坑指南
  • 成品油消费税税率包括哪些
  • 建筑工程施工企业资质
  • 账本遗失征管法处罚
  • 销售哪些产品需办许可证
  • 排污费属于什么费用科目
  • 小规模纳税人租赁房屋税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设