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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql多表分析_mysql多表查询实例结果及分析-2017.12.14

發(fā)布時間:2025/3/19 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql多表分析_mysql多表查询实例结果及分析-2017.12.14 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天幫運營導數(shù)據(jù)時發(fā)現(xiàn)sql執(zhí)行速度非常慢,嗯,按照之前的編寫習慣,后來跟架構師一起分析討論,改進了下,現(xiàn)記錄分析如下

一、測試表、sql情況set?@bgDate?=?'20171213';

set?@edDate?=?'20171213';

/*編號①*/

SELECT?TA_ID,SUM(TB.amount),SUM(TB.fee)?FROM

(SELECT?ORDER_NO,TA_ID?FROM?Table_A??WHERE?TA_STATUS?=?100?AND?TA_CHANNEL_MERCH_NO?=?'201712130001'

AND?SETTLE_DATE?<=?@endDate?AND?SETTLE_DATE?>=?@begDate?)TA

LEFT?JOIN

(SELECT?ORDER_NO,AMOUNT,fee?FROM?Table_B)?TB

ON?TA.ORDER_NO?=?TB.ORDER_NO

GROUP?BY?TA.TA_ID;

/*編號②*/

SELECT?TA.`TA_ID`?AS?TA_ID?,?sum(TA.`AMOUNT`)??AS?sumAmount?,?sum(TB.`fee`)???AS?sumMerFee?FROM

`Table_A`?TA

LEFT?JOIN

`Table_B`?TB

ON?TA.`ORDER_NO`?=?TB.`ORDER_NO`

WHERE??TA.`SETTLE_DATE`?>=?@begDate?AND?TA.`SETTLE_DATE`?<=?@endDate

AND?TA.`TA_CHANNEL_MERCH_NO`='201712130001'

AND?TA.`TA_STATUS`=100

GROUP?BY?TA.`TA_ID`

/*以下為表的索引情況*/

Table_A?索引:TA_ID、order_no、settle_date

Table_B?索引:order_no

/*以下為表的數(shù)據(jù)量情況*/

Table_A:10W+條記錄

Table_B:10W+條記錄

二、測試結果

①90s才出結果;

②1.5s就出結果;

三、分析

1、navicat-解釋

編號①的TA進行了全表掃描;

2、自主分析

編號①sql

(1)雖然已減少了表數(shù)據(jù)量,但是由于新創(chuàng)了臨時表TA、TB,都無索引,在left join時速度較慢;

(2)最后group by時,TA.TA_ID也無索引,導致再一次降低速度;

編號②sql

(1)雖然TA、TB直接全表left join,但是連接的order_no已做索引,速度還是能保證的;

(2)where和group by中涉及部分字段已加索引。

總結

以上是生活随笔為你收集整理的mysql多表分析_mysql多表查询实例结果及分析-2017.12.14的全部內容,希望文章能夠幫你解決所遇到的問題。

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