首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成表统计信息的MySQL查询

生成表统计信息的MySQL查询
EN

Stack Overflow用户
提问于 2014-06-20 18:36:21
回答 1查看 639关注 0票数 1

我有一个MySQL数据库表,每天大约有10-15k的插入,而且它肯定会在接下来的几个月中增加。

代码语言:javascript
复制
- Table Example (reservations): *important fields*
+----+--------+----------+---------+-----+
| ID | people | modified | created | ... |
+----+--------+----------+---------+-----+

我需要提供每天的统计数据,根据用户选择的日期或日期范围,告知条目有多少(总数和指定的人数相同)。今天,我将执行两个查询,每个请求。它运行良好,具有理想的延迟,但我想知道如果有更多的数据,它是否会稳定。

代码语言:javascript
复制
- Single Date:
SELECT COUNT(*) from reservations WHERE created='DATE USER SELECTED'
SELECT COUNT(*), people from reservations WHERE created='DATE USER SELECTED' GROUP BY people

- Date Range:
 SELECT COUNT(*) from reservations WHERE created BETWEEN 'DATE USE SELECTED' AND 'DATE USE SELECTED';
 SELECT COUNT(*), people from reservations WHERE created BETWEEN 'DATE USE SELECTED' AND 'DATE USE SELECTED' GROUP BY people

IN MY VIEW
Pros: Real time statistics.
Cons: Can overload the database, with similar and slow queries.

我想创建一个名为“statistics”的次要表,并在我的服务器上运行一个cron作业,每天早上计算所有统计数据。

代码语言:javascript
复制
 - Table Example (statistics):

+----+------+--------------------+---------------------------+---------------------------+-----+
| ID | date | numberReservations | numberReservations2People | numberReservations3People | ... |
+----+------+--------------------+---------------------------+---------------------------+-----+

- IN MY VIEW
Pros: Faster queries, do not need to count every request.
Cons: Not real time statistics.

你觉得怎么样?有更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-20 18:50:38

如果表中有正确的复合索引,则可以有效地满足所显示的聚合查询。如果您不确定复合索引,您可以阅读它们。

您的(created,people)上的索引reservations对这两个查询都是正确的。他们都可以满足于一个有效的索引扫描,称为松散范围扫描。您会发现,在您的系统中,在可预见的将来,它们足够快,您不需要费心处理第二个表。

这很好,因为像您提议的辅助表是造成混淆和错误的常见原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24333629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档