mysql - 将昂贵函数调用的结果存储在 MySQL 表中
问题描述
假设我有一组可变长度的整数。我在这组整数上应用一个函数并得到一个结果。
myFunction(setOfIntegers) => myResult
假设调用myFunction
非常昂贵,我想以某种方式存储此函数调用的结果。
在我的应用程序中,我已经在使用 MySQL,我想以某种方式创建一个带有setOfIntegers
PK 和myResult
附加字段的表。
我在想我可以通过setOfIntegers
在将其存储到数据库之前将其转换为字符串来做到这一点。
这可以通过任何其他方式完成吗?或者是否有更好的方法来存储此类函数调用的结果,以避免使用相同的整数集第二次调用它们?
解决方案
我不了解 Java,但 Perl 有my $str = join(',', $array)
,PHP 有$str = implode(',', $array)
. 然后字符串$str
可以用作PRIMARY KEY
(假设它不是太长)。结果将进入另一列。
您的应用程序代码(在 Java 中)需要首先执行implode
并SELECT
查看该函数是否已经针对给定数组进行了评估。如果不是,则执行该功能并INSERTing
以新行结束。
如果这将是多线程的,则可以INSERT IGNORE
用来处理重复。(也有其他解决方案。)
另一个注意事项:如果您的整数集是有序的,那么我所描述的就是“完整的”。如果它是无序的,则在 imploding 之前对其进行排序。这将提供一个规范的表示。
推荐阅读
- sql - 通过 spark sql 中的集合进行过滤
- python - 如何使用 Choregraphe 在 Pepper 上运行 python 模块?
- python-3.x - 如何保存和重新加载 Keras 编码器-解码器模型的隐藏状态以进行推理
- python - AttributeError:“str”对象在保存到 XML 文件时没有属性“iter”
- reactjs - 从内容映射数据
- angular - 滚动到 web 中的特定元素
- javascript - canvas.getContext('2d') 是同步还是异步?
- ansible - 在单个主机上使用“pkg5”的 Yum 模块
- r - How can I select rows of a data frames if column is a list?
- c# - 从方法中引用和读取 .txt 文件内容