Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql varchar(4000)列上的唯一性约束_Mysql_Unique_Duplication - Fatal编程技术网

Mysql varchar(4000)列上的唯一性约束

Mysql varchar(4000)列上的唯一性约束,mysql,unique,duplication,Mysql,Unique,Duplication,我将URL存储在具有varchar(4000)数据类型的列中。我想在此列上强制唯一性约束,但无法这样做,因为4000远远超出了最大限制 有没有办法在这些列上强制执行唯一性 长字段的唯一性不能通过使用索引来实现 正确的方法可能是在插入/更新之前在列中执行select,但对于列中已包含的值失败 在应用程序级别或存储过程内部,一种可行的解决方法可能是在事务中对新值执行选择,然后插入(如果该值尚未存在) 在任何情况下,都应该(非唯一)对相关列的一部分进行索引,以加快选择速度。您的MySQL版本是什么?我

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


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

长字段的唯一性不能通过使用索引来实现

正确的方法可能是在插入/更新之前在列中执行select,但对于列中已包含的值失败

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


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

您的MySQL版本是什么?我使用的是MySQL 5.5.31。因此,请检查一下,前767字节的索引将不充分?这些是URL,通常协议和主机部分会重复。所以,如果我取字节的第一部分,它可能会使其他URL失败,而这些URL在查询部分实际上是不同的。