碰到大难题了.有没有更好更快的处理方法?要的是速度!
时间:2011-11-28
来源:互联网
一个光电行业的应用。 有一种机器,它会自动测试芯片。测完一片芯片后会产生一个CSV的文件。文件里一般会有40万笔的数据。就是相当于芯片中的每一个颗粒都会测试到。存放这个CSV文件的table名字叫RowDataBody.表结构如下:
[TEST] [varchar](50) NULL,
[PosX] [varchar](50) NULL,
[PosY] [varchar](50) NULL,
[BIN] [varchar](50) NULL,
[VF1] [varchar](50) NULL,
[VF2] [varchar](50) NULL,
[VF3] [varchar](50) NULL,
[VF4] [varchar](50) NULL,
[VFD] [varchar](50) NULL,
[VZ1] [varchar](50) NULL,
[IR] [varchar](50) NULL,
[IV1] [varchar](50) NULL,
[LOP1] [varchar](50) NULL,
[WLP1] [varchar](50) NULL,
[WLD1] [varchar](50) NULL,
[WLC1] [varchar](50) NULL,
[HW1] [varchar](50) NULL,
[PURITY1] [varchar](50) NULL,
[X1] [varchar](50) NULL,
[Y1] [varchar](50) NULL,
[Z1] [varchar](50) NULL,
[ST1] [varchar](50) NULL,
[INT1] [varchar](50) NULL,
[IV2] [varchar](50) NULL,
[LOP2] [varchar](50) NULL,
[WLP2] [varchar](50) NULL,
[WLD2] [varchar](50) NULL,
[WLC2] [varchar](50) NULL,
[HW2] [varchar](50) NULL,
[PURITY2] [varchar](50) NULL,
[X2] [varchar](50) NULL,
[Y2] [varchar](50) NULL,
[Z2] [varchar](50) NULL,
[ST2] [varchar](50) NULL,
[INT2] [varchar](50) NULL,
[ESDPASS] [varchar](50) NULL,
[ESDSTOP] [varchar](50) NULL,
[ESDIR] [varchar](50) NULL,
[ESDVZ] [varchar](50) NULL,
[ESDVF3] [varchar](50) NULL,
[ESDVF1] [varchar](50) NULL,
[IDs] [int] NULL,
[IDss] [int] NULL,
[ID] [int] IDENTITY(1,1) NOT NULL
其中的BIN字段,会从一个固定的数据表中获得。用来算出这个颗粒的特性值.字段VF1开始到ESDVF1结束,这些字段都是这个颗粒的特性值.根据这些特性值,要从另外一个表中tb_BinTables获得它的BIN值。tb_BinTables结构如下:
[IDs] [bigint] NOT NULL,
[ID] [bigint] NULL,
[IFlag] [bigint] NULL,
[IOrder] [bigint] NULL,
[iBIN] [int] NULL,
[cOPTION] [nvarchar](50) NULL,
[cRANK] [nvarchar](50) NULL,
[iVF3L] [decimal](8, 2) NULL,
[iVF3H] [decimal](8, 2) NULL,
[iIV1L] [decimal](8, 2) NULL,
[iIV1H] [decimal](8, 2) NULL,
[iLOP1L] [decimal](8, 2) NULL,
[iLOP1H] [decimal](8, 2) NULL,
[iVF1L] [decimal](8, 2) NULL,
[iVF1H] [decimal](8, 2) NULL,
[iWD1L] [decimal](8, 2) NULL,
[iWD1H] [decimal](8, 2) NULL,
[iIRL] [decimal](8, 2) NULL,
[iIRH] [decimal](8, 2) NULL,
[iVZ1L] [decimal](8, 2) NULL,
[iVZ1H] [decimal](8, 2) NULL,
[iWP1L] [decimal](8, 2) NULL,
[iWP1H] [decimal](8, 2) NULL,
[iHW1L] [decimal](8, 2) NULL,
[iHW1H] [decimal](8, 2) NULL,
[iVF2L] [decimal](8, 2) NULL,
[iVF2H] [decimal](8, 2) NULL,
[iIV2L] [decimal](8, 2) NULL,
[iIV2H] [decimal](8, 2) NULL,
[iLOP2L] [decimal](8, 2) NULL,
[iLOP2H] [decimal](8, 2) NULL,
[iWD2L] [decimal](8, 2) NULL,
[iWD2H] [decimal](8, 2) NULL,
[iVFDL] [decimal](8, 2) NULL,
[iVFDH] [decimal](8, 2) NULL,
[iVF4L] [decimal](8, 2) NULL,
[iVF4H] [decimal](8, 2) NULL,
[iWX1L] [decimal](8, 2) NULL,
[iWX1H] [decimal](8, 2) NULL,
[iWY1L] [decimal](8, 2) NULL,
[iWY1H] [decimal](8, 2) NULL,
[iPurityL] [decimal](8, 2) NULL,
[iPurityH] [decimal](8, 2) NULL,
[cmdl] [nvarchar](20) NULL
表RowDataBody中的VF1值针对tb_BinTables表中的iVF1L,iVF1H. L代表VF1这个特性值的最低值,H代表是这个特性的最高值
所以,要 iVF1L<=VF1<=iVF1H. 其它字段依次类推。 一般一个芯片的特性值会有150笔记录。
所以,为了找出RowDataBody的BIN值。我需要用VF1~ESDVF1的值去tb_BinTables找相对应的BIN值,然后update回RowDataBody.
按一般思路的话,一个芯片要做 40万*150=600万次。
各位有什么好的思路。这样处理太慢了。
[TEST] [varchar](50) NULL,
[PosX] [varchar](50) NULL,
[PosY] [varchar](50) NULL,
[BIN] [varchar](50) NULL,
[VF1] [varchar](50) NULL,
[VF2] [varchar](50) NULL,
[VF3] [varchar](50) NULL,
[VF4] [varchar](50) NULL,
[VFD] [varchar](50) NULL,
[VZ1] [varchar](50) NULL,
[IR] [varchar](50) NULL,
[IV1] [varchar](50) NULL,
[LOP1] [varchar](50) NULL,
[WLP1] [varchar](50) NULL,
[WLD1] [varchar](50) NULL,
[WLC1] [varchar](50) NULL,
[HW1] [varchar](50) NULL,
[PURITY1] [varchar](50) NULL,
[X1] [varchar](50) NULL,
[Y1] [varchar](50) NULL,
[Z1] [varchar](50) NULL,
[ST1] [varchar](50) NULL,
[INT1] [varchar](50) NULL,
[IV2] [varchar](50) NULL,
[LOP2] [varchar](50) NULL,
[WLP2] [varchar](50) NULL,
[WLD2] [varchar](50) NULL,
[WLC2] [varchar](50) NULL,
[HW2] [varchar](50) NULL,
[PURITY2] [varchar](50) NULL,
[X2] [varchar](50) NULL,
[Y2] [varchar](50) NULL,
[Z2] [varchar](50) NULL,
[ST2] [varchar](50) NULL,
[INT2] [varchar](50) NULL,
[ESDPASS] [varchar](50) NULL,
[ESDSTOP] [varchar](50) NULL,
[ESDIR] [varchar](50) NULL,
[ESDVZ] [varchar](50) NULL,
[ESDVF3] [varchar](50) NULL,
[ESDVF1] [varchar](50) NULL,
[IDs] [int] NULL,
[IDss] [int] NULL,
[ID] [int] IDENTITY(1,1) NOT NULL
其中的BIN字段,会从一个固定的数据表中获得。用来算出这个颗粒的特性值.字段VF1开始到ESDVF1结束,这些字段都是这个颗粒的特性值.根据这些特性值,要从另外一个表中tb_BinTables获得它的BIN值。tb_BinTables结构如下:
[IDs] [bigint] NOT NULL,
[ID] [bigint] NULL,
[IFlag] [bigint] NULL,
[IOrder] [bigint] NULL,
[iBIN] [int] NULL,
[cOPTION] [nvarchar](50) NULL,
[cRANK] [nvarchar](50) NULL,
[iVF3L] [decimal](8, 2) NULL,
[iVF3H] [decimal](8, 2) NULL,
[iIV1L] [decimal](8, 2) NULL,
[iIV1H] [decimal](8, 2) NULL,
[iLOP1L] [decimal](8, 2) NULL,
[iLOP1H] [decimal](8, 2) NULL,
[iVF1L] [decimal](8, 2) NULL,
[iVF1H] [decimal](8, 2) NULL,
[iWD1L] [decimal](8, 2) NULL,
[iWD1H] [decimal](8, 2) NULL,
[iIRL] [decimal](8, 2) NULL,
[iIRH] [decimal](8, 2) NULL,
[iVZ1L] [decimal](8, 2) NULL,
[iVZ1H] [decimal](8, 2) NULL,
[iWP1L] [decimal](8, 2) NULL,
[iWP1H] [decimal](8, 2) NULL,
[iHW1L] [decimal](8, 2) NULL,
[iHW1H] [decimal](8, 2) NULL,
[iVF2L] [decimal](8, 2) NULL,
[iVF2H] [decimal](8, 2) NULL,
[iIV2L] [decimal](8, 2) NULL,
[iIV2H] [decimal](8, 2) NULL,
[iLOP2L] [decimal](8, 2) NULL,
[iLOP2H] [decimal](8, 2) NULL,
[iWD2L] [decimal](8, 2) NULL,
[iWD2H] [decimal](8, 2) NULL,
[iVFDL] [decimal](8, 2) NULL,
[iVFDH] [decimal](8, 2) NULL,
[iVF4L] [decimal](8, 2) NULL,
[iVF4H] [decimal](8, 2) NULL,
[iWX1L] [decimal](8, 2) NULL,
[iWX1H] [decimal](8, 2) NULL,
[iWY1L] [decimal](8, 2) NULL,
[iWY1H] [decimal](8, 2) NULL,
[iPurityL] [decimal](8, 2) NULL,
[iPurityH] [decimal](8, 2) NULL,
[cmdl] [nvarchar](20) NULL
表RowDataBody中的VF1值针对tb_BinTables表中的iVF1L,iVF1H. L代表VF1这个特性值的最低值,H代表是这个特性的最高值
所以,要 iVF1L<=VF1<=iVF1H. 其它字段依次类推。 一般一个芯片的特性值会有150笔记录。
所以,为了找出RowDataBody的BIN值。我需要用VF1~ESDVF1的值去tb_BinTables找相对应的BIN值,然后update回RowDataBody.
按一般思路的话,一个芯片要做 40万*150=600万次。
各位有什么好的思路。这样处理太慢了。
作者: sz_jeff_zhao 发布时间: 2011-11-28
这个表结构。。。
作者: fredrickhu 发布时间: 2011-11-28
tb_BinTables表多少记录?
两表通过什么关联?IDs?关联字段有无索引
用一个语句可以一次更新所有的40万记录,如果索引配合的话不会太慢,不用太担心计算次数。
两表通过什么关联?IDs?关联字段有无索引
用一个语句可以一次更新所有的40万记录,如果索引配合的话不会太慢,不用太担心计算次数。
作者: Haiwer 发布时间: 2011-11-28
你那个特征值表,应该保存的是范围而不是具体的数值吧,这样对照,细微的差别就是不相同.
作者: qianjin036a 发布时间: 2011-11-28
建议自己先把表结构写好语句后再上传,要不然乱七八糟的.
作者: renadg 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28