[英]SQL query for large data filter from big database
我在服务器上有一个大型数据库。 该数据库目前包含约2000万条记录的手机号码。 我想匹配网站上的手机号码以过滤DND或非DND手机号码。 我正在使用此查询进行小数过滤
SELECT phone_number
FROM mobnum_table
WHERE phone_number IN ('7710450282', '76100003451', '8910003402', '9410009850', '7610000191');
但是如果我想在几秒钟内过滤掉1000万个手机号码记录,那该怎么办? 我听说过SQL查询优化,但是对此了解不多。 另外,请指导我在这种情况下应考虑使用哪种存储引擎?
我已经用谷歌搜索过,但是没有找到很好的答案。
提前致谢..
我认为您的需求本身存在一些问题。 如果您告诉我们更多有关您的问题的信息,也许我们可以为您提供帮助。 无论如何,给IN
所有100000个数字不是一个好主意。 一种选择是创建另一个表并进行内部联接。
假设您有另一个表selectednumbers
具有id
和phone_number
列,则可以执行内部phone_number
,如下所示
SELECT phone_number FROM mobnum_table a inner join selectednumbers b on
a.phone_number=b.phone_number
如前所述,您的问题还不完整。 因此,请提供更多信息,以便我们提供优化的查询。
因此,您要生成100,000个数字的列表,然后将其放回另一个查询中?
如果要从表中获取数字,请首先查询生成数字列表的查询,将其放在in()括号内,您会立即看到很大的改进。
将它们都重组为使用JOIN而不是in(),您将看到更多。
或者,根据您的数据库结构,只需执行
SELECT phone_number
FROM mobnum_table
WHERE DND = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.