簡體   English   中英

在我的Db表中查找重復項的最佳方法是什么

[英]what is the best approach to find duplicates in my Db table

在我的應用程序中,用戶可以選擇多個過濾器選項。 我將此存儲在數據庫表中。

例如

用戶1可以選擇過濾器A ^ B

用戶2可以選擇過濾器AORC ^ D,依此類推。

它存儲在Db中的方式是

user        filter_selected

user1       A^B
user2       AORC^D

現在的標准是,沒有用戶可以選擇相同的過濾器。 因此,如果用戶3到來並選擇A ^ B或B ^ A,它將引發錯誤。

我試圖提出一個聰明的邏輯來驗證這在javascript中。 一種方法是遍歷數據庫中的所有用戶(可以有很多),並按字母順序排序並檢查其是否相同。 因此,在我們的示例中,A ^ B和B ^ A將是相同的AB ^。 這樣我可以檢查。 還有其他更好的方法可能是使用mysql命令本身嗎?

您可以根據字符對過濾器規則進行排序,然后將其插入以執行操作,例如B ^ A將轉換為AB ^,當您要檢查時,可以對過濾器進行排序然后搜索

如果您想擁有原始過濾器,則無需在意數據庫的大小,而在乎速度的話,也可以將原始文件另存為另一列。如果您在意數據庫的大小,則可以將原始過濾器和當您要搜索選擇與過濾器長度相同的行,然后需要按字母順序排序時,或者可以保存每個過濾器字符的索引,例如,當將A ^ B更改為AB ^時,可以保存此過濾器AB ^ | 021,但這將需要更多空間,例如原始列,因此我不建議使用此方法。 另外,如果您的過濾器總是很短,那么您就無法獲取所有記錄並與所有記錄進行比較。 您可以創建所有可能的過濾器方式(例如AB ^ A ^ BB ^ A BA ^ ^ AB ^ BA),但必須小心,因為在此方法中您正在創建n! 字符串,這一點也不好,只是對於長度太短的字符串就可以了,那就是當數據庫中的記錄太多時,此方法可能會很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM