目录
问题现象:
问题分析:
解决方法:
问题现象:
今天在项目学习中,需要给数据添加一个id,组长要求使用UUID.
问题分析:
由于我们的项目中使用的是postgresql数据库,那么如果在postgresql语句中使用UUID呢?
正常来说很多小伙伴应该都试过在java中使用 java.util.UUID 这个工具类吧!
这确实是个很方便的工具类,然而我在想的是,直接在sql语句中使用uuid,为什么要这样做呢?
其实答案很简单,就是因为,如果直接操作sql语句完成dao操作就可以节省很多时间;
试想一下:假如你从已有的数据库表的数据中做一个select统计,然后你又需要将这些统计好的数据(结果集)插入到某个统计表中;每条记录都需要一个id,这种情况下你会怎么操作呢?
也许有人会这样做,首先编写一个sql语句去执行 select 统计操作,然后将结果集封装成实体类对象传到后端,再用java.util.UUID工具类给这个对象的 id 属性 添加一个 随机的uuid值,然后再执行一个insert操作,将数据插入到数据库统计表中去.
嗯,这个想法很不错,是再正常不过的逻辑,只是缺点也很明显,那就是效率会很低,
假如你需要统计的数据是以万,十万等更大的单位量的话,这个效率低的现象就会非常的明显.
因为从数据库select统计的结果集数据映射到java后端的实体类和调用java函数添加UUID的整个程序中,消耗的时间,远比你直接从sql中操作UUID要多很多;
在sql语句中添加uuid的话,就可以在select统计的过程中就可以操作了,因此获得的结果集中就直接带有了id字段值,同时利用sql中的查询插入结构表达式:
insert into table2 select xxx,yyy,zzz from table2
也比在java后端中分成select和insert两个dao操作数据库要更快.
那么在了解了sql的好处之后,就要和大家分享一下该如何实现了!
步骤如下:
1.安装 uuid-ossp 文件:
在postgresql数据库中,是不能直接使用UUID函数的,需要手动安装 uuid 的相关文件,才能应用UUID相关的函数.
2.调用UUID的相应函数:
在安装了 uuid-ossp 文件后,通过 select 语句 调用UUID的相应函数即可获取到随机id;
解决方法:
1.安装 uuid-ossp 文件,在sql编辑器中编写并执行该语句:
create extension "uuid-ossp" ;
2.调用UUID的相应函数,:
select uuid_generate_v4() 或 select uuid_generate_v1() 皆可.