MYSQL优化
来源:2-4 List分区

xiaowu9
2017-05-29
疑问一:这条语句放在MYSQL存储过程当中,在插入数据之前做了一次数据是否存在的查询,在插入的的时候有没有必要在INSERT语句后面再添
加where条件?
疑问二:能否直接使用INSERT INTO + WHERE 方式来快速添加数据,而不做判断.这样做在执行效率方面与资源当用方面有没有什么好处
很多情况下如:如果存在则更新,不存在则插入,并发下不能重复,最优的SQL语句是什么样的?
写回答
2回答
-
sqlercn
2017-05-31
和创建联合索引差不多,只是要多一个unique关键字 CREATE UNIQUE INDEX idx_xxx ON tb(c1,c2)
00 -
sqlercn
2017-05-31
如果在高并发情况下,在前面判断完后面在插入有可能会出现数据重复的情况,如果要求UID唯一,可以在UID上加一个唯一索引,这样就可以保证数据不重复。
insert into + where方式下可能会对子查询中的表加锁,这样会造成其它线程的阻塞。
MySQL的Insert 语句支持ON DUPLICATE KEY UPDATE 子句,可以在主键或唯一索引冲突时对数据进行更新,但要使用这种语句最好是在表中只有一个主键或是唯一索引的情况下。
012017-05-31
相似问题