2013-03-02 100 views
0

我们正在研究在PHP/MySQL环境中使用尽可能少的资源的数据库中开发搜索例程的最佳方法。检查外部数据是否已存在于我们的MySQL数据库中的最佳方法

我们处理外部信息的馈送,这些信息有时会微妙地变化或有新的状态值。这意味着我们仅限于添加我们自己的数字键并通过常规SQL搜索进行搜索。

我们正在考虑使用MD5创建一个唯一的字符串所以不是搜索为...

WHERE DATE = '12/12/2012 09:00' 
AND TYPE = 'new alert' 
AND loc = 'rear door' 
AND subtype = 'pir hit' 
AND lat = 39.3343 
AND lon = 145.234 
AND current STATUS = 'active' 
AND Support = 'en-route'; 

我们创建了一个MD5例如ef6d3c25ac9362413fed2b4d3f65962a在我们感兴趣的领域之外,例如 2012年12月12日09:00〜新警报〜后门〜皮尔命中〜-39.3343〜145.234〜活动〜途中,然后我们可以在数据库中搜索这个MD5而不是单独的字段。

我们也有兴趣查看使用最近MD5列表的文件,而不是一直询问db,因为我们可能在Feed中至多有1100多个作业。更多的时候是大约60个左右的工作。

我们对您的想法和理由感兴趣,您认为这是最佳解决方案。

+0

哇!不要使用MD5加密数据库中的正常单元格。您将来无法阅读数据! – 2013-03-02 02:31:04

+1

@aguyfromhere:据推测,OP提出了一个额外的带有散列的搜索索引字段。他们不需要颠倒散列,这当然是不合理的。 – 2013-03-02 02:35:25

+0

@MichaelPetrotta:当像'PRIMARY KEY AUTO INCREMENT'这样的东西可以正常工作时,使用巨大的散列似乎很荒谬。 – 2013-03-02 02:36:58

回答

1

我会去Apache Solr作为解决方案。分面搜索将满足您在这里的所有需求。复制/索引您的数据不需要太多的努力。我们在我们公司的项目中实施了这个引擎,对名称/日期/特性/供应商/分销商等进行搜索,它的功能就像一个魅力。虽然在胶合线上的MD5已经有一段时间的解决方案。无论如何,这取决于你的时间以及你现有的解决方案如何处理这种情况。

+0

感谢Michael Petrotta和Kapo。我们有一段时间才能实施新流程,以便我们有时间查看Apache Solr和其他解决方案。 – Ewen 2013-03-05 05:44:41

相关问题