一个网站公开了一个 URL 地址列表,第二个网站定期检查这个列表,其目的是判断那里是否出现了任何新地址。该列表是“移动的”,这意味着新地址逐渐出现而旧地址消失。
第二个网站将地址存储在数据库中以供比较。问题是 - 如何才能更快地做到这一点,速度是关键。
- 从第一个网站获取列表,从数据库中删除不在我们列表中的旧地址,插入列表中但不在数据库中的数据库地址。
或
- 同上,但使用从这些地址获取的 CRC32 字符串执行此操作。
我是这样想的——那些 URL 地址可以是任意长的,在数据库搜索之前将它们转换为 CRC32 似乎保证了数据库负载的线性增加,当从数据库中搜索/删除它们时。
另一方面,在 PHP 级别将它们转换为 CRC32 字符串会给 http 服务器带来更多负载,问题是 - 预先转换它们是否比在 sql 查询的 WHERE 子句中使用整体更快?
顺便说一句。是的,CRC32 对我的用例具有足够的独特性。
最佳答案
在您的描述中,您似乎总是用新列表替换数据库,因此最好使用原始字符串。 无论如何,如果表被索引,性能改进将小于几乎每个现代数据库中将字符串转换为 int 的开销。
关于php - 在 sql 比较查询之前将长字符串转换为短哈希 - 提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205286/