论坛首页 Java企业应用论坛

向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率

浏览 77139 次
精华帖 (8) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (8)
作者 正文
   发表时间:2008-12-19   最后修改:2008-12-19
在表中创建一个timestamp列,使用key+timestamp,每次更新都更新timestamp,在更新前先来判断读时与更新时的timestamp是否一致。例子: 
    Connection conn = null;
       
    try {
        PreparedStatement stmt;
        long ts; //timestamp
       
        conn = ds.getConnection( );
        stmt = conn.prepareStatement("UPDATE Customer " +
                                     "SET firstName = ?, lastName = ?, phone = ?, " +
                                     "birthDay = ?, lastUpdateTS = ? " +
                                     "WHERE id = ? AND lastUpdateTS = ?");//注意条件
        stmt.setString(1, firstName);
        stmt.setString(2, lastName);
        stmt.setString(3, phone);
        stmt.setDate(4, birthDate);
        stmt.setLong(5, ts = System.currentTimeMillis( ));
        stmt.setInt(6, id);
        stmt.setLong(7, lastUpdateTS);
        stmt.executeUpdate( );
        lastUpdateTS = ts;
    }
    catch( SQLException e ) {
        e.printStackTrace( );
    }
    finally {
        if( conn != null ) {
            try { conn.close( ); }
            catch( SQLException e ) { }
        }
    }

    

0 请登录后投票
   发表时间:2008-12-19  
不知道 你数据的重复是否有关联的。就是说不一定主键一样才重复的,比如 只要A B两个字段都一样就是重复。 不同的情况会有不同的处理办法。
0 请登录后投票
   发表时间:2009-02-24  
叫我一声大哥,我帮你

我现在的效率是插入一条记录平均耗时1毫秒,判断是否重复几乎不消耗时间

最垃圾的办法是先select,不论是不是通过临时表
相对来说异常处理要快很多,但也不是最快
0 请登录后投票
   发表时间:2009-02-24  
mysql 的 on duplicate key update 1=1 ~

不知道合不合楼主的需求~
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics