对于SQL Server数据库中的表,哪个更好的独特或唯一约束?
我应该使用
不同
从大表中获取记录或放入
唯一约束
到该字段,所以没有重复输入?
我的最终目标只是那样,获取唯一数据,我知道两者都会给我这个,但如果我使用唯一约束字段,那么它会在我插入重复数据时给出sql错误。好吗?它对服务器或数据库有影响吗?我正在使用SQL Server进行此过程。
答案 0 :(得分:1)
他们完全完全不同的用例。
如果列本身(或列集)必须根据架构详细信息(数据)唯一,则使用唯一约束。换句话说,如果要求数据在该列(或列集)上是唯一的,请使用唯一约束。
例如,如果您要维护成员资格表,则成员ID应该是唯一的。
数据库必须保护自己免受狡猾的数据攻击,这不应该留给行为良好的应用程序,因为第一个不良行为的应用程序会破坏你的宇宙。
如果数据不必须是唯一的(例如每个成员所在的城镇),那么你可以决定" uniquify"它在select
语句中,取决于您的需求:
-- Get all towns.
select distinct town from members
所以,这是你的解决方案矩阵,优先级递减:
实际的数据在该列上是否必须是唯一的?如果是这样,则必须使用唯一约束。否则,不应使用唯一约束。
如果数据不需要是唯一的,那么您是否只需要为该数据的每个可能值获取一行?如果是,请使用select distinct
。如果没有,请单独使用select
。
答案 1 :(得分:0)
也许这会对你有帮助。
答案 2 :(得分:-1)
取决于
使用distinct
您需要在查询时付款,但对用户来说更简单。
使用唯一约束,您需要在插入时付款,现在应用程序必须处理重复项上的异常,但查询速度更快。
如果没有更多信息,我会选择与众不同,因为生活更简单,你不会锁定行为(下周你可能需要重复)。