jdbc查询时间优化,判断主键是否重复的方法体简化怎么写

菜鸟写了个对主键是否重复进行一个判断的方法。
mysql现在存有45万行数据,,就调用这方法判断就花了三四秒,但是直接mysql里直接查询cid主键列只需要0.00几秒不知道这里为什么这么慢,求解
后面大约还有一百多万行数据要录入。查询速度不久几何翻倍咯。求代码优化给点建议或者重写,,

 public  static boolean getcid(int cid){
        Conn conn=null;    //Conn是封装好了对mysql数据库进行数据增删查改的方法的封装类
        boolean gg=true;  //存取主键是否重复的变量。默认true
        PreparedStatement st = null;
        String sqll="SELECT cid FROM b";
        ResultSet rs;
        try {
            conn=new Conn();
                st=conn.prepareStatement(sqll);
                rs=st.executeQuery();
                while(rs.next())          //遍历结果集,,如果查询到cid已存在,方法返回false
                    if(rs.getInt("cid")==cid)
                    {
                    gg=false;
                    break;
                    }

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();
        } 
        return gg;
    }
 为什么String sqll="SELECT count(cid) FROM b where cid"=cid;这里拼上where呢
 客户端取全部结果集影响速度因素
 1、网络因素
 2、java获取后创建对象

你这样,直接插虽然cid主键有索引,数量大速度也会慢的。有id就把id带到where条件里面

你这样,直接插虽然cid主键有索引,数量大速度也会慢的。有id就把id带到where条件里面