UseParameter 效率问题 返回

SqlSugar 沟通中
11 102
该叫什么 救赎 发布于5天前
悬赏:0 飞吻

db.Insertable(List<实体>).UseParameter().ExecuteCommand()

请问大佬,为啥这种写法效率很低啊,实测批量写入100多条记录要1s左右

oracle 数据库 自增主键数据表

热忱回答11

  • sqlsugar 版本是 5.1.4.214   .net8.0框架 

    0 回复
  • https://www.donet5.com/Home/Doc?typeId=2366

    需要按模版提供DEMO,并且能重现


    目前ORACLE正常表UseParameter是很快的

    0 回复
  • @fate sta: 核心插入语句是这个:   await sqlSugarClient.Insertable(productionList).AS(tableName).UseParameter().ExecuteCommandAsync();  

     model:

        public class EAPProductionData

        {

            /// <summary>

            /// 主键ID(自增,缓存100)

            /// </summary>

            [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, IsIdentity = true, IsOnlyIgnoreInsert = true)]

            public long Id { get; set; }


            /// <summary>

            /// 消息ID

            /// </summary>

            [SugarColumn(ColumnName = "MESSAGEID")]

            public string? MessageId { get; set; }


            /// <summary>

            /// 消息编码

            /// </summary>

            [SugarColumn(ColumnName = "MESSAGECODE")]

            public string? MessageCode { get; set; }


            /// <summary>

            /// 资源名称

            /// </summary>

            [SugarColumn(ColumnName = "RESOURCENAME")]

            public string? ResourceName { get; set; }


            /// <summary>

            /// 资源类型

            /// </summary>

            [SugarColumn(ColumnName = "RESOURCETYPE")]

            public string? ResourceType { get; set; }


            /// <summary>

            /// 采集时间

            /// </summary>

            [SugarColumn(ColumnName = "COLLECTIONTIME")]

            public DateTime? CollectionTime { get; set; }


            /// <summary>

            /// 测试类型

            /// </summary>

            [SugarColumn(ColumnName = "TESTTYPE")]

            public string? TestType { get; set; }


            /// <summary>

            /// 测试描述

            /// </summary>

            [SugarColumn(ColumnName = "TESTDESCRIPTION")]

            public string? TestDescription { get; set; }


            /// <summary>

            /// 测试值

            /// </summary>

            [SugarColumn(ColumnName = "TESTVALUE")]

            public string? TestValue { get; set; }


            /// <summary>

            /// 标准值

            /// </summary>

            [SugarColumn(ColumnName = "STANDARDVALUE")]

            public string? StandardValue { get; set; }


            /// <summary>

            /// 最大值

            /// </summary>

            [SugarColumn(ColumnName = "MAXVALUE")]

            public string? MaxValue { get; set; }


            /// <summary>

            /// 最小值

            /// </summary>

            [SugarColumn(ColumnName = "MINVALUE")]

            public string? MinValue { get; set; }


            /// <summary>

            /// 数值单位

            /// </summary>

            [SugarColumn(ColumnName = "VALUEUNIT")]

            public string? ValueUnit { get; set; }


            /// <summary>

            /// 单位ID

            /// </summary>

            [SugarColumn(ColumnName = "UNITID")]

            public string? UnitId { get; set; }


            /// <summary>

            /// 结果

            /// </summary>

            [SugarColumn(ColumnName = "RESULT")]

            public string? Result { get; set; }


            /// <summary>

            /// 预留字段1

            /// </summary>

            [SugarColumn(ColumnName = "RESERVE1")]

            public string? Reserve1 { get; set; }


            /// <summary>

            /// 预留字段2

            /// </summary>

            [SugarColumn(ColumnName = "RESERVE2")]

            public string? Reserve2 { get; set; }


            /// <summary>

            /// 预留字段3

            /// </summary>

            [SugarColumn(ColumnName = "RESERVE3")]

            public string? Reserve3 { get; set; }


            /// <summary>

            /// 录入时间

            /// </summary>

            [SugarColumn(ColumnName = "INTIME")]

            public DateTime? InTime { get; set; }


            /// <summary>

            /// 测试序号

            /// </summary>

            [SugarColumn(ColumnName = "TESTSEQ")]

            public long? TestSeq { get; set; }


            /// <summary>

            /// 最大预警值

            /// </summary>

            [SugarColumn(ColumnName = "MAXWARNVALUE")]

            public string? MaxWarnValue { get; set; }


            /// <summary>

            /// 最小预警值

            /// </summary>

            [SugarColumn(ColumnName = "MINWARNVALUE")]

            public string? MinWarnValue { get; set; }


            /// <summary>

            /// 预警结果

            /// </summary>

            [SugarColumn(ColumnName = "WARNRESULT")]

            public string? WarnResult { get; set; }


            /// <summary>

            /// 面板ID

            /// </summary>

            [SugarColumn(ColumnName = "PANELID")]

            public string? PanelId { get; set; }


            /// <summary>

            /// 员工ID

            /// </summary>

            [SugarColumn(ColumnName = "EMPLOYEEID")]

            public string? EmployeeId { get; set; }


            /// <summary>

            /// 配方名称

            /// </summary>

            [SugarColumn(ColumnName = "RECIPENAME")]

            public string? RecipeName { get; set; }

        }

    是不是 AS(tableName) 影响了插入效率

    0 回复
  • image.png


     await sqlSugarClient.Insertable(productionList).AS(tableName).UseParameter().ExecuteCommandAsync();  使用UseParameter批量写入的速度还没有遍历快

    0 回复
  • 提提供模版提供DMEO.

    0 回复
  • 用新表并且自测

    0 回复
  • 0 回复
  • 把自增ID去掉,oracle的自增导致的

    0 回复
  • orace自增底层不支持批量,性能差。可以用雪花ID或者序列实现。

    0 回复
  • 救赎 救赎 VIP0
    8小时前

    @fate sta:好的,谢谢

    0 回复
  • 救赎 救赎 VIP0
    8小时前

    @OsmondDeng:收到,,谢谢

    0 回复