wordpress多站点 用户同步,小网站从哪找的,网站做推广页需要什么软件,广东网站建设公司哪家好对于数据量较大的表#xff0c;在其上进行统计查询通常会效率很低#xff0c;并且还要考虑统计查询是否会对在线的应用产生负面影响。通常在这种情况下#xff0c;使用中间表可以提高统计查询的效率#xff0c;下面通过对session 表的统计来介绍中间表的使用#xff1a;(1…对于数据量较大的表在其上进行统计查询通常会效率很低并且还要考虑统计查询是否会对在线的应用产生负面影响。通常在这种情况下使用中间表可以提高统计查询的效率下面通过对session 表的统计来介绍中间表的使用(1)session 表记录了客户每天的消费记录表结构如下CREATE TABLE session (cust_id varchar(10) , --客户编号cust_amount DECIMAL(16,2), --客户消费金额cust_date DATE, --客户消费时间cust_ip varchar(20) –客户IP 地址)(2)由于每天都会产生大量的客户消费记录,所以session 表的数据量很大,现在业务部门有一具体的需求希望了解最近一周客户的消费总金额和近一周每天不同时段用户的消费总金额。针对这一需求我们通过2 种方法来得出业务部门想要的结果。方法1在session 表上直接进行统计,得出想要的结果。mysql select sum(cust_amount) from session where cust_dateadddate(now(),-7);------------------| sum(cust_amount) |------------------| 161699200.64 |------------------1 row in set (3.95 sec)方法2创建中间表tmp_session表结构和源表结构完全相同。CREATE TABLE tmp_session (cust_id varchar(10) , --客户编号cust_amount DECIMAL(16,2), --客户消费金额cust_date DATE, --客户消费时间cust_ip varchar(20) –客户IP 地址) ;转移要统计的数据到中间表,然后在中间表上进行统计得出想要的结果。mysql insert into tmp_session select * from session where cust_dateadddate(now(),-7);Query OK, 1573328 rows affected (6.67 sec)Records: 1573328 Duplicates: 0 Warnings: 0mysql select sum(cust_amount) from tmp_session;------------------| sum(cust_amount) |------------------| 161699200.64 |------------------1 row in set (0.73 sec)从上面的2 种实现方法上看,在中间表中做统计花费的时间很少(这里不计算转移数据花费的时间)另外针对业务部门想了解“近一周每天不同时段用户的消费总金额”这一需求在中间表上给出统计结果更为合适,原因是源数据表(session 表)cust_date 字段没有索引并且源表的数据量较大所以在按时间进行分时段统计时效率很低这时可以在中间表上对cust_date 字段创建单独的索引来提高统计查询的速度。中间表在统计查询中经常会用到其优点如下: 中间表复制源表部分数据并且与源表相“隔离”在中间表上做统计查询不会对在线应用产生负面影响。 中间表上可以灵活的添加索引或增加临时用的新字段,从而达到提高统计查询效率和辅助统计查询作用。