表有数据已有5000万左右,上面有不少索引,每天还有几万的数据入库,这些入库的数据有部分会重复的是异常插入快,还是先select后在插入快(select是根据主键来判断是否存在的)

解决方案 »

  1.   

    嘿嘿~~这要看你插入数据主键重复量大小了,如果不太多,用try..except快,如果占一大半,那还是先select一下效率高。还有就是对于海量数据的巨表来说,索引字段和select的写法一定要优先考虑效率。
    比如索引字段ID,用int型或者long型要比varchar效率高,数值只需比较一次,而varchar要比较len(s)次。
      

  2.   

    我们以前判断重复值的时候,是先select一下数据库,如果有重复值就直接抛掉的或者提示一下用户
      

  3.   

    插入的sql写成:
    if not exists(select 1 from tb where id=123)
    insert tb (id,...) values (123,...)