我的應用程序想要將國際電話號碼列表存儲在mysql數據庫中。然後應用程序需要查詢數據庫並搜索特定的數字。聽起來很簡單,但它實際上是一個巨大的問題。掙扎着一個MySQL數據庫的電話號碼
由於用戶可以用不同的格式搜索該號碼,我們必須每次都對數據庫進行全面掃描。
例如。我們可能會將數字17162225555存儲在數據庫中(還有500萬條記錄)。現在用戶出現並嘗試使用7162225555進行搜索。另一個用戶可能試圖用2225555等進行掃描。換句話說,數據庫必須使用「like%number%」來發出SQL查詢,這會導致全面掃描。
我們應該如何設計這個應用程序?有什麼方法可以調整Mysql來更好地處理這個問題嗎?或者我們應該不使用SQL?
PS。我們有數百萬條目,每秒有10個這樣的搜索請求。
你可以構造應用程序來輸入特定的字段,然後打破數字。 I.E.國家代碼,7位數字等等。然後,您將匹配索引列而不是全文搜索。 – JNK 2010-07-23 19:45:32
你只存儲美國號碼,還是你有國際號碼?如果它只是美國的數字,應該很容易按照JNK的建議格式化數字。如果你使用的是國際電話號碼,我懷疑它會困難得多。 – 2010-07-23 19:49:31
這個相關的問題討論了國際數字分解爲組成部分,如果這是你想要的方式http://stackoverflow.com/questions/2543938/how-to-split-mobile-number-into-country-code -area-code-and-local-number/2544066#2544066 – 2010-07-23 20:01:46