繁体   English   中英

SQL查询大数据库中的大数据过滤器

[英]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具有idphone_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM