对于数据库操作经常会有这样的需求:
查表中是否存在某一项,如果存在则不做任何操作,如果不存在则插入一行的内容。
在一台8*2.4G,64G的服务器上,跑一个四五千万的表,查询的操作也要花上几秒钟,这么慢,咋办?
通常,为了提高查询速度,会想到建索引,要查哪项,就建哪项的索引。
但其实更好的方法是根本不去查,将需要查询的几个字段建一个联合的唯一索引,然后直接就是插入操作。
如果能够插入,说明原来这条数据不存在,操作成功之后返回插入行id,如果不能够插入,则说明这行数据已经存在。
这样操作能够极大的提高执行效率,建了唯一联合索引之后,插入的时间也就是几十毫秒。
这样做唯一一个前提条件是,唯一的联合索引能够建。