我的应用程序想要将国际电话号码列表存储在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