2013-03-02 106 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

相關問題