2 yamemory YaMemory 于 2016.03.07 10:32 提问

MySQL中什么是禁用唯一性检查?唯一性检查,唯一性约束条件,唯一性索引之间的区别是什么?

MySQL中,插入数据时会对数据进行唯一性检查。这种唯一性检验也会降低插入数据的速度。为了能优化插入记录的速度,可以在插入数据前禁用唯一性检查,等到插入数据完毕后在开启。。。我做了以下两次测试。在关闭了唯一性检查后为什么不能插入相同的数据????
测试1,先创建唯一性约束条件,再禁用唯一性检查(如图):图片说明
测试2,先创建唯一性索引,再禁用唯一性检查(如图):图片说明
两次测试中我都禁用了唯一性检查,为什么最后不能够插入相同的id 值呢?求大神解释一下,晚生在这谢谢了。。。。

6个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.07 13:51
已采纳

mysql的唯一性检查,其实这是mysql的一个bug,在它的官网上已经发表了,测试方法就是你给的这样的。
官方说明unique_checks其实是没有效果的。原文链接为:http://bugs.mysql.com/bug.php?id=6357
所以呢,楼主就不要纠结这个属性的作用了。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.07 13:55

我也测试了你的命令,的确是没有效果的。楼主求真务实的精神,值得称赞!
只能说开源技术也是有缺陷的,这也是mysql不断再更新新版本的原因。

WinsenJiansbomber
WinsenJiansbomber   2016.03.07 15:31

表要纠结了,实用为王,过多的特性其实也就是一种负担。

YaMemory
YaMemory   2016.03.07 18:08

图片说明

YaMemory
YaMemory   2016.03.07 18:08

图片说明

YaMemory
YaMemory 这是重启后的结果,,并不是因为这个原因。。。
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2016.03.07 13:47

禁用以后,最好重启一下mysql等看看是否条件已经设置成功了

YaMemory
YaMemory ![图片说明](http://img.ask.csdn.net/upload/201603/07/1457345304_254527.png)。。重启以后依旧不行。。。。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
大量插入数据时关闭主键唯一性检测
我们想实现的效果是: 合并数据库的说话,如果出现主键重复的情况,首先不报错。如果可以,则两条数据都保留,更新其中的一条数据,然后使数据不唯一。 思路一:mysql插入数据时可以关闭主键唯一检测,关闭检测,等数据库合并完成,用脚本或者手动修改主键重复的值(数据量比较小时)。(此方法测试了不成功,参照下文做的,mysql版本 5.7.0)  1) 对于Myisam类型的表,可以通过以下方
[置顶] 记录字段值唯一性检查 解决方案
问题 表 users[id,name] id name 1 abc 记录在更新时怎么一次sql查询就能得到 name 值是唯一的,要求同时满足以下情况: 1.值不存在,2.值已经存在,但不是自身,3.值存在且为自身     创建时: // 验证名称是否唯一: select count(*) from table where name ='#name' 更新时: // 验证名
主键约束、唯一性约束、检查约束
1.约束定义了必须遵循的的用户维护数据一致性和正确性的规则,是强制实现数   据完整性的主要途径。        主键约束(primary    key)        唯一性约束(unique)        检查约束(check)     条件的构造                范围      字段     in(集合)
MySQL插入数据前检测唯一性的一些语句用法总结
在写程序的时候经常碰到在向数据库中插入数据时,判断数据是否已存在。诸如有存在的数据时跳过,不存在的数据继续插入,要避免重复插入,又不想折腾两回数据库连接操作,这里可能会用到以下语句,现小结一下。 INSERT IGNORE INTO IGNORE是MySQL相对于标准SQL的扩展。如果在新表中有重复关键字,此种方法效率比较高,判断是否存在,存在会丢弃掉这行数据,不做任何插入,否则插入。
唯一性索引和非唯一性索引深入
记得在tom的oracle9i&10g编程艺术中这样一句话:在一个非唯一索引中,oracle会把rowid作为一个额外列加到键上,使索引键为唯一;先按索引键排序,再按rowid升序排序;在一个唯一索引中,不会再加rowid到索引键上。今天有时间验证一下,呵呵。验证:非唯一索引,oracle会把rowid作为一个额外列加到键上,使索引键为唯一;先按索引键排序,再按rowid升序排序S
验证唯一性
视图层                                          姓名:                                                                        密码:                                                      
唯一性索引的意义
原文转自:http://blog.itpub.net/17203031/viewspace-700089/ 索引是我们经常使用的一种数据库搜索优化手段。适当的业务操作场景使用适当的索引方案可以显著的提升系统整体性能和用户体验。在Oracle中,索引有包括很多类型。不同类型的索引适应不同的系统环境和访问场景。其中,唯一性索引Unique Index是我们经常使用到的一种。   唯一性索引uni
oracle 创建、删除唯一性约束
alter table COUNTER_DATA drop constraint TERM_NO_REP_DATE; commit; alter table COUNTER_DATA add constraint TERM_NO_REP_DATE unique(C_BRANCH_OR_TERM_NO, D_CASH_REP_DATE); commit;
唯一性约束、主键约束、唯一索引的区别
1.主键约束(PRIMARY KEY) 主键用于唯一地标识表中的每一条记录 可以定义一列或多列为主键 主键列上没有任何两行具有相同值(即重复值) 主键列上也不能为空值2.唯一性约束(UNIQUE) 唯一性约束用来限制不受主键约束的列上的数据的唯一性, 即表中任意两行在 指定列上都不允许有相同的值。3.唯一索引(INDEX) 创建唯
【MySQL】增加、查看、删除唯一性约束
增加唯一性约束:alter table tableName add unique(column_name)查看唯一性约束show keys from tableName;从里面可以找到需要删除字段的Key_name。删除唯一性约束drop index Key_name on tableName;