【问题标题】:Uniqueness constraint on varchar(4000) columnvarchar(4000) 列的唯一性约束
【发布时间】:2013-11-27 09:07:48
【问题描述】:

我将 URL 存储在具有 varchar(4000) 数据类型的列中。我想对该列强制执行唯一性约束,但无法这样做,因为 4000 远远超出了最大限制。

有没有办法在这些列上强制执行唯一性?

【问题讨论】:

  • 你的 MySQL 版本是多少?
  • 我使用的是 Mysql 5.5.31。
  • 那么,仅仅检查,前 767 个字节的索引会不够吗?
  • 这些是 URL,通常协议和主机部分会重复。因此,如果我采用字节的第一部分,它可能会使其他在查询部分实际上不同的 URl 失败。

标签: mysql unique duplication


【解决方案1】:

该长字段的唯一性不能通过使用索引来强制执行。

正确的方法可能会在插入/更新之前在 trigger 内执行选择,并且对于列中已包含的值会失败。

在应用程序级别或存储过程内部的可行解决方法可能是对新值执行选择,然后在事务中插入(如果该值不存在)。

在任何情况下,都应该(非唯一地)对相关列的一部分进行索引以加快选择速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-10
    • 2010-10-11
    • 1970-01-01
    • 2012-01-20
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多