索引用于如何避免重复 [英] Index use to how to avoid duplication

查看:85
本文介绍了索引用于如何避免重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将excel文件导入此表时有一个表如何避免使用索引进行重复操作。



I have one table when i am importing excel file into this table how to avoid dupliaction using index.

CREATE UNIQUE INDEX MyIndex
ON Dataupload(date,time,BREMPROCODE,BREMPRONAME,PRICE)
WITH IGNORE_DUP_KEY



此代码无法正常工作


this code is not working correctly

推荐答案

如果您不希望索引是唯一的,请删除'UNIQUE'关键字。



如果添加约束如果您尝试插入相同的值,那么该约束将导致违规。



您可以做的是避免插入数据的select语句中的重复项。如果要根据索引中的值快速访问行,则应添加索引。



例如:



Well if you do not want your index to be unique, remove the 'UNIQUE' keyword.

If you add a constraint to be unique, that contraint will cause a violation if you attempt to insert identical values.

Where you can do is to avoid the duplicates in the select statements inserting the data. You should add an index if you want quick access to rows based on the values in the index only.

For instance like this:

INSERT INTO DATAUPLOAD(DATE, TIME, BREMPROCODE, BREMPRONAME, PRICE)
(SELECT DISTINCTROW DATE, TIME BREMPROCODE, BREMPRONAME, PRICE FROM ACMEDATASOURCETABLE)





如果是每小时插入,您可以将值存在,您需要也可以使用例如外连接:





in the case of hourly insertions where you could have the value already present, you need to use for instance an outer join also:

INSERT INTO DATAUPLOAD(DATE, TIME, BREMPROCODE, BREMPRONAME, PRICE)
(SELECT DISTINCTROW DATE, TIME BREMPROCODE, BREMPRONAME, PRICE FROM ACMEDATASOURCETABLE A LEFT JOIN DATAUPLOAD B ON A.DATE = B.DATE AND A.TIME = B.TIME AND A.BREMPROCODE = B.BREMPROCODE AND A.BREMPRONAME = B.BREMPRONAME AND A.PRICE = B.PRICE WHERE B.BREMPROCODE IS NULL)





如果原因这不是一种过于有效的方法,但它非常简单,最后B.BREMPROCODE可能导致任何字段,只是检查将值加入表中插入以产生空值指示。



这里有更多外部联接的例子: https://technet.microsoft .com / zh-CN / library / ms187518(v = sql.105).aspx [ ^ ]


这篇关于索引用于如何避免重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆