作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在一个表中有一个包含 5,000,000 行的 15 整数列。给定包含 15 个整数的输入记录,我需要将输入记录与 5,000,000 条记录表进行比较并获取所有匹配的行。
注意1:一行中的所有整数都是唯一的
注2:列匹配顺序和输入记录不重要。
例如:1、10、15、23、9、22、99、11、19、32、45、21、76、12、33 和 33、10、15、99、11、19、32、45、21 , 23, 9, 22, 76, 12, 1 应该会产生匹配结果
是否可以实现一个散列函数/按位运算来为每一行生成一个唯一索引。如果记录中的值相同,该函数可以为 2 行返回相同的索引
最佳答案
内容不多,但应该可以帮助您入门。
您可能需要一个产生尽可能少的冲突的散列函数;但它也必须是可交换的(即:将数字添加到哈希的顺序无关紧要)。您可以通过结合使用 XOR 和位移位来实现这一点(参见 page)。
您可能希望将散列存储在另一列中。然后你可以散列你正在寻找的输入并在你的数据库中查找散列。请注意,哈希允许误报,因此您仍然需要检查候选行是否确实是您想要的(即:对所有内容进行排序并进行比较)。
关于database - 提高定位一行(整数列)的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878797/
我是一名优秀的程序员,十分优秀!