日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 中间表的好处_Mysql中使用中间表提高统计查询速度

發布時間:2023/12/3 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 中间表的好处_Mysql中使用中间表提高统计查询速度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于數據量較大的表,在其上進行統計查詢通常會效率很低,并且還要考慮統計查詢是否會對在線的應用產生負面影響。通常在這種情況下,使用中間表可以提高統計查詢的效率,

下面通過對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_date>adddate(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_date>adddate(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 字段創建單獨的索引來提高統計查詢的速度。

中間表在統計查詢中經常會用到,其優點如下:

? 中間表復制源表部分數據,并且與源表相“隔離”,在中間表上做統計查詢不

會對在線應用產生負面影響。

? 中間表上可以靈活的添加索引或增加臨時用的新字段,從而達到提高統計查詢

效率和輔助統計查詢作用。

總結

以上是生活随笔為你收集整理的mysql 中间表的好处_Mysql中使用中间表提高统计查询速度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。