Mysql 用于筛选10+;百万价值

Mysql 用于筛选10+;百万价值,mysql,sql,where,snowflake-cloud-data-platform,Mysql,Sql,Where,Snowflake Cloud Data Platform,我需要创建一个每日图表/报告,该图表/报告需要计算每天的行数,但必须过滤1000多万个值。为此编写where子句似乎不太可能,因为我将无法过滤数百万个值 是否有一种方法可以使用查询来实现这一点,或者在数据/行可用并每天加载到数据库之前,必须在ETL过程的上游进行过滤?我会使用一个带有创建日期的字段(作为日期类型而不是时间戳)。在这个字段上创建一个索引,然后继续使用where子句。这将允许数据库按日期进行最佳筛选。一些数据库甚至会跟踪与给定密钥匹配的记录数。这样做,只是使用where子句,并依赖于

我需要创建一个每日图表/报告,该图表/报告需要计算每天的行数,但必须过滤1000多万个值。为此编写where子句似乎不太可能,因为我将无法过滤数百万个值


是否有一种方法可以使用查询来实现这一点,或者在数据/行可用并每天加载到数据库之前,必须在ETL过程的上游进行过滤?

我会使用一个带有创建日期的字段(作为日期类型而不是时间戳)。在这个字段上创建一个索引,然后继续使用where子句。这将允许数据库按日期进行最佳筛选。一些数据库甚至会跟踪与给定密钥匹配的记录数。这样做,只是使用where子句,并依赖于DBMS实现的优化。

“为此编写where子句似乎不太可能,因为我将无法过滤数百万个值。”您尝试过吗?更多的上下文有助于回答这个问题——数据库是如何使用的?它是否经常被读取,这样您就不想在一段时间内将读取锁定在表上?如果没有,那应该没问题。嘿@johnheroy-这里有一个更详细的描述:1。每天,数百万行被添加到我们的一个“事务”表中。每个用户每天/小时可能有超过1行。2.这里唯一的参数/列之一是IP地址。我们每天有数百万个IP地址作为事件参数发送并加载到表中。3.我需要过滤掉1000多万个IP地址,只报告限于这些IP的数据。4.不要认为我可以通过我的SQL客户端将where子句限定为1000多万IP。您需要提供一个示例,说明“过滤数百万值”的含义。你是指(…)谓词中包含数百万项的
?也许您需要将这些项加载到一个临时表中,然后进行联接。@BillKarwin-这是正确的。我的意思是在(…)中,谓词中有1000多万项。我同意将这些项目加载到临时表中会很好。我想看看是否有其他方法可以做到这一点?我不知道在不使用IN(…)谓词的情况下如何创建临时表。@BillKarwin所说的-只需将值放在单独的表中并使用联接即可。