讓我們假設我們有一張人名錶(姓名,地址,SSN等)。SQL和模糊比較
我們希望找到與指定人員「非常相似」的所有行。 我想實現A和表People中所有行的某種模糊邏輯比較。將有幾個模糊推理規則分別在幾列上工作(例如,3個模糊規則爲姓名,2個規則在姓氏上,5個規則在地址上)
問題是以下兩種方法哪種更好,爲什麼?
實現所有模糊規則的存儲過程和使用一個沉重的SELECT語句返回「非常相似」 A.所有行這種做法可能包括使用同音,SIM指標等
實施一個或多個簡單的SELECT語句,它返回的結果較不準確,「與A非常相似」,然後將所有返回的行(數據庫外部)與模糊比較A得到「非常相似」的行。所以模糊比較將以我喜歡的編程語言實現。
表的人應該有多達50萬行,我想每天賺取大約500-1000查詢這個樣子。我使用MySQL(但這還有待考慮)。
請說出您正在使用的rdbms。 – 2013-04-03 23:19:29
爲什麼不在你的select中使用一個case,如果它是相似的則返回1,否則返回0,然後求和所有的列。那些超過特定範圍的人應該被退回。看起來像是解決您的問題的簡單方法。 – 2013-04-03 23:30:18
@JesusZamora:問題是,首先相似性的價值可能是浮動的(例如0.43),這就是爲什麼我在談論「模糊比較」。第二個問題是,計算這種相似性的價值相當複雜,我不知道哪種方法會更優化。 – 2013-04-03 23:38:07