【发布时间】:2019-04-05 11:59:27
【问题描述】:
样本表:
+----+-------+-------+-------+-------+-------+---------------+
| id | col1 | col2 | col3 | col4 | col5 | modifiedTime |
+----+-------+-------+-------+-------+-------+---------------+
| 1 | temp1 | temp2 | temp3 | temp4 | temp5 | 1554459626708 |
+----+-------+-------+-------+-------+-------+---------------+
上表有5000万条记录
- (col1、col2、col3、col4、col5 这些是 VARCHAR 列)
- (id 是 PK)
- (修改时间)
每一列都有索引
例如:我的网站中有两个标签。
FirstTab - 我使用以下标准打印上表的计数 [col1 like "value1%" and col2 like "value2%"]
SeocndTab - 我使用以下标准打印上表的计数 [col3 like "value3%"]
由于我有 5000 万条记录,因此按照这些标准进行计数需要花费太多时间才能得到结果。
注意:有时我会更改记录数据(表中的行)。插入新行。删除不需要的记录。
我需要一个可行的解决方案,而不是查询整个表。例如:喜欢缓存旧计数。有这样的可能吗?
【问题讨论】:
-
请不要使用不适用于您的问题的标签。我删除了数据库标签,因为不清楚您实际使用的是哪一个。请添加only你实际使用的数据库的标签
-
Stack Overflow不是免费的代码编写服务。您应该尝试自己编写代码。在doing more research 之后,如果您有问题,您可以发布您尝试过的内容,并清楚地解释什么不起作用并提供Minimal, Complete, and Verifiable example。我建议阅读How to Ask 一个好问题和the perfect question。另外,请务必将tour阅读this
-
如果我在任何数据库中找到了解决方案,那很好。
-
@JohnConde 在做了一些研究之后,我才来到这里。我想不出任何可能的解决方案。
-
@vinieth 是的,具体取决于您的写入模式。但是您需要更详细地描述您的约束条件。这是一个无法通过一次计数关闭的银行应用程序,还是某个夜间批处理作业执行一些通用报告等等等。
标签: mysql sql database postgresql performance