获取随机唯一ID


placeholder image
admin 发布于:2009-07-09 18:19:00
阅读:loading

image.png

在网上找到UUID这个class,有人说可以产生系统随机并且唯一的ID,我就测试了一下,网数据库里面插入了100万条记录,嘿嘿,结果果然没有令我失望,上面的图片可以说明这100万条数据没有重复的。

总结出了以下些经验:

1、代码的质量(运行性能):修改过后的代码基本4s、5s就完成了10000条数据的插入;(这个表里面有2个字段,一个事自动增长id,一个事产生的随机ID),20000条数据基本是11s、12s执行完;50000条数据就是44s、47s执行完毕,效率还不错吧。

2、在执行大批量的新增时,起初用的是:

/**

*数据库新增

*/

public void add(){

  //执行添加随机ID的方法

  preparedStatement.executeUpdate();

}

/**

*测试新增

*/

public static void main(String args[]){

  A  a = new A();

  for(int i=0;i<20000;i++){

    a.add();

  }

}

总结:效率低的很呀;因为这是:循环执行方法。

后来用改进了一些:

在新增方法里面:

public void add(){ 

  StringBuffer str = new StringBuffer();

  for(int i=0;i<20000;i++){

    String sql = "  insert  into  表名 values (' "  +  随机ID, +  " ' ) ; ";//随机20000次

    str.append(sql);

  }

  preparedStatement.executeUpdate();

}

这种做法的好处是循环20000次字符串(sql语句),再对字符串进行处理。效率嘛就是上面说的咯。

 

随机唯一ID,有时候会有用,而这里的随机产生ID非常好用,也简单:

UUID  uuid = UUID.randomUUID();

OK了!


@20220111 补充

上述示例内容在十多年后的今天看来纯属自娱自乐了,如今UUID的生成在JDK8提供了更为线程安全的版本,而随意唯一ID的生成更推荐使用MyBatis Plus中增强的IdWorker实现,其提供了雪花等多种唯一ID的生成方式。