update根据主键更新实体,如何命中索引 返回
请教一下,我的实体属性主键id是char(32)类型,
```C#
[SugarColumn(ColumnName = "Id", ColumnDataType = "char(32)", Length = 32, IsPrimaryKey = true)]
public string Id { get; set; }
DbManager.Client().Updateable<Tasks>()
.SetColumns(p => new Tasks
{
Status = 2
})
.Where(p => p.Id == "3d8e151e436742abac318b7a4b3db4e3")
.ExecuteCommand();
```
更新的时候,监视sql server profile底层打印出来的sql语句是这样的:\
```sql
exec sp_executesql N'UPDATE [tasks] SET
[status] = @Const0 WHERE ( [id] = @Id1 )',N'@Const0 int,@Id1 nvarchar(4000),
@id nvarchar(4000)',@Const0=2,
@Id1=N'3d8e151e436742abac318b7a4b3db4e3',
@id=NULL
```
@Id1 nvarchar(4000)参数变量定义的是nvarchar类型, 我们之前在项目中使用ADO原生的时候,发现参数类型如果和字段类型不一致的话,索引无法命中,
请问SqlSugar有什么好的写法嘛?
热忱回答(2)
-
fate sta VIP0
2周前文档:字符索引优化
设置成char
0 回复 -
虚静 VIP0
2周前@fate sta:可以了,非常感谢,但是为什么最终结果中会 多一个参数出来呢?@id=NULL ,实际上我的语句中 只有两个参数,虽然数据正常更新了,但不知道有没有影响
0 回复