MYSQL优化

来源:2-4 List分区

xiaowu9

2017-05-29

http://szimg.mukewang.com/592b6e4400017e6e07780073.jpg

疑问一:这条语句放在MYSQL存储过程当中,在插入数据之前做了一次数据是否存在的查询,在插入的的时候有没有必要在INSERT语句后面再添

加where条件?

疑问二:能否直接使用INSERT INTO + WHERE 方式来快速添加数据,而不做判断.这样做在执行效率方面与资源当用方面有没有什么好处

很多情况下如:如果存在则更新,不存在则插入,并发下不能重复,最优的SQL语句是什么样的?

写回答

2回答

sqlercn

2017-05-31

和创建联合索引差不多,只是要多一个unique关键字 CREATE UNIQUE  INDEX idx_xxx ON tb(c1,c2)

0
0

sqlercn

2017-05-31

  1. 如果在高并发情况下,在前面判断完后面在插入有可能会出现数据重复的情况,如果要求UID唯一,可以在UID上加一个唯一索引,这样就可以保证数据不重复。

  2. insert into + where方式下可能会对子查询中的表加锁,这样会造成其它线程的阻塞。

  3. MySQL的Insert 语句支持ON DUPLICATE KEY UPDATE 子句,可以在主键或唯一索引冲突时对数据进行更新,但要使用这种语句最好是在表中只有一个主键或是唯一索引的情况下。

0
1
xiaowu9
联合唯一索引怎么创建?
2017-05-31
共1条回复

高性能可扩展MySQL数据库设计及架构优化 电商项目

从基础设计入手,设计高性能可扩展的千万级数据库架构

1155 学习 · 166 问题

查看课程