因为公司的单个业务数据达到千W级别,并且有源源不断的新数据进来。新数据进来都需要进行查重,重复数据不能进来,查重条件有很多字符串的对比,最大的字符串不超过1000个字符,但是字符串的比较,对于数据库来说,非常的耗性能,如果能将String转成数字来进行比较对于性能的提高将非常有用。
后来想到String有一个hashcode,看看能否使用:
<SPAN style="FONT-SIZE: small">/**
* Returns a hash code for this string. The hash code for a
* <code>String</code> object is computed as
* <blockquote><pre>
* s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
* </pre></blockquote>
* using <code>int</code> arithmetic, where <code>s[i]</code> is the
* <i>i</i>th character of the string, <code>n</code> is the length of
* the string, and <code>^</code> indicates exponentiation.
* (The hash value of the empty string is zero.)
*
* @return a hash code value for this object.
*/
public int hashCode() {
int h = hash;
int len = count;
if (h == 0 && len > 0) {
int off = offset;
char val[] = value;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}</SPAN>
但是遗憾的是int的范围非常窄(-2147483648——2147483647),出现重复的概率虽然说比较低,但是不可避免会出现重复的可能性。
于是想到,是否可以自己重新写过hashcode方法,将int的范围扩大到long类型(-9223372036854774808~9223372036854774807),这样在目前长度的字符生成的hashcode出现重复的可能性应该几乎为零。
大家对于这个设想是否有什么更好的意见?
分享到:
相关推荐
oracle数据库性能优化.pdforacle数据库性能优化.pdforacle数据库性能优化.pdforacle数据库性能优化.pdforacle数据库性能优化.pdf
C#连接Oracle数据库字符串 C#连接Oracle数据库字符串
Oracle数据库性能优化.pdf
Oracle数据库性能优化Oracle数据库性能优化Oracle数据库性能优化Oracle数据库性能优化Oracle数据库性能优化
资源名称:Oracle数据库性能优化 PDF内容简介:本书面向实际应用,从多个角度出发,对Oracle优化中的很多关键问题进行了深入全面的探讨,涵盖了Oracle优化的各个技术层面,从内存优化、IO规划及优化,到SQL优化调整...
Oracle数据库性能优化方案的研究,仅供写论文时参考。
Oracle 数据库性能优化的主要方法
oracle数据库性能优化 合集 包含文件11个文档 中文教程
本问由藏经阁http://www.zangjing.net提供. Oracle数据库性能分析,掌握Oracle数据库处理SQL语句原理和Oracle数据库性能分析基本方法。
Oracle数据库性能优化实践指南,压缩包文件,欢迎下载
Oracle数据库性能优化实务_共享池分析
ORACLE SQL性能优化系列 ORACLE SQL性能优化系列 ORACLE SQL性能优化系列
Oracle9i 数据库性能优化
Oracle数据库性能优化 盖国强著,压缩包文件,欢迎下载
Oracle 数据库性能优化与运维最佳实践
《oracle dba手记3:数据库性能优化与内部原理解析》由多位数据库技术专家合著而成,融合了各行业dba 的工作经验与思考,包含了精心挑选的数据库性能优化与内部原理解析案例。内容涵盖“dba 手记”,以手记形式记录...
自己工作时写的oracle搜索数据库,查找想要找的字符串.配置简单,省去单独写sql的时间.运行需要jre运行环境.