在sql比较查询之前将长字符串转换为短哈希 - 提高性能?

时间:2015-07-03 11:04:41

标签: php mysql performance hash

网站公开了一个URL地址列表,第二个网站定期查看此列表,其目的是告知是否有任何新地址出现在那里。该列表正在“移动”,这意味着新地址逐渐出现,但旧地址消失。

第二个网站将地址存储在数据库中以供比较。问题是 - 如何更快地做到这一点,速度是关键。

  1. 从第一个网站获取一个列表,从不在我们列表中的数据库旧地址中删除,插入列表中但不在数据库中的数据库地址。
  2. OR

    1. 如上所述,但是从这些地址获取CRC32字符串。
    2. 我这样想 - 这些URL地址可以任意长,在数据库搜索似乎保证数据库负载线性增加时,将它们转换为CRC32,从数据库中搜索/删除它们。

      另一方面,在PHP级别将它们转换为CRC32字符串会给http服务器带来更多负担,问题是 - 在sql查询的WHERE子句中使用整个事件比在整个sql查询中使用整数更快吗?

      顺便说一句。是的,CRC32对我的用例有足够的独特性。

2 个答案:

答案 0 :(得分:1)

在您的描述中,您似乎总是用新列表替换数据库,因此最好使用原始字符串。 无论如何,如果表被索引,性能改进将小于几乎每个现代数据库中将字符串转换为int的开销。

答案 1 :(得分:1)

如果索引不是一个选项,我建议您查看xxhash
但我不得不说我真的不知道是否有一个快速实现的PHP。