精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

【博文推薦】關聯(lián)查詢SQL的一次優(yōu)化過程

數(shù)據庫 SQL Server
如前幾次博文中所述,流程結束后的實例信息可以通過統(tǒng)一的入口即高級查詢(可以導出excel,也預留了生成各種報表的接口)查詢。但對于一些特殊的工作流,比如轉正、離職、考勤等我們也提供了專門的查詢模塊。比如本文中所述的離職模塊:離職模塊共分三個部分,分別為離職信息新增、審批中離職、已結束離職三個子模塊。
  本博文出自51CTO博客gaochaojs博主,有任何問題請進入博主頁面互動討論!

博文地址:http://jncumter.blog.51cto.com/812546/1620406

如前幾次博文中所述,流程結束后的實例信息可以通過統(tǒng)一的入口即高級查詢(可以導出excel,也預留了生成各種報表的接口)查詢。但對于一些特殊的工作流,比如轉正、離職、考勤等我們也提供了專門的查詢模塊。比如本文中所述的離職模塊:離職模塊共分三個部分,分別為離職信息新增、審批中離職、已結束離職三個子模塊。離職信息新增功能主要是針對被動離職,也即單位勸退、辭退或單方面解除合同的離職信息新增,此類離職一旦保存即可認為是已結束離職,所以不像審批中離職查詢邏輯中十分清晰,已結束離職需要關聯(lián)多表進行查詢。在測試系統(tǒng)中進行測試時,我們發(fā)現(xiàn)直接執(zhí)行已結束離職查詢sql,在數(shù)據量為17條時,約1s,實際較慢,但尚可接受。該功能在正式系統(tǒng)上線后,離職數(shù)據約400條,用戶簡單在前端計時,約需十余秒等待,用戶體驗已經極差。拿出該查詢sql,如下:

  1. SELECT * 
  2.  (SELECT DISTINCT leaveinfo.id, f_sqrgh, f_sqrbm, f_sqr, f_sqbmbm 
  3.     , f_sqbm, f_lxdhfj, f_sjhm, f_sqrq, f_rzrq 
  4.     , f_ndlzrq, f_qrlzrq, f_zw, f_gw, f_gwlx 
  5.     , f_gwcj, f_szdq, f_gzdd, f_lzyy, f_lzyyzs 
  6.     , f_yggxbmtjl, f_lzlx, f_inputtype, belongCompany, postDirection 
  7.     , techLevel, idCard, staffinfo.sex, staffinfo.birthday, exec.id AS 'processExecutionId' 
  8.     , exec.status AS 'processExecutionStatus'exec.formDefineId, exec.processDefineId, exec.processInstanceId, exec.tableName 
  9.     , process.`nameAS 'processDefineName' 
  10. FROM T_DYMC_20140625100255 leaveinfo LEFT JOIN t_per_staffinfo staffinfo ON staffinfo.staffId = leaveinfo.f_sqrgh LEFT JOIN t_bpm_process_execution exec ON exec.pkValue = leaveinfo.id LEFT JOIN t_bpm_process_define process ON process.id = exec.processDefineId 
  11. WHERE leaveinfo.f_sqrgh = staffinfo.staffId 
  12.     AND (exec.`status` = 2 
  13.         AND leaveinfo.f_inputtype = 'FLOW' 
  14.         OR leaveinfo.f_inputtype = 'MANUAL'
  15. ) allData LEFT JOIN t_sys_user sysUser ON allData.f_sqrgh = sysUser.staffId 

這是一個分頁查詢,查詢出所有結果的數(shù)量,如下:

  1. SELECT COUNT(DISTINCT allData.id) 
  2. FROM (SELECT DISTINCT leaveinfo.id, leaveinfo.f_sqrgh 
  3.     FROM T_DYMC_20140625100255 leaveinfo LEFT JOIN t_per_staffinfo staffinfo ON staffinfo.staffId = leaveinfo.f_sqrgh LEFT JOIN t_bpm_process_execution exec ON exec.pkValue = leaveinfo.id LEFT JOIN t_bpm_process_define process ON process.id = exec.processDefineId 
  4.     WHERE leaveinfo.f_sqrgh = staffinfo.staffId 
  5.         AND (exec.`status` = 2 
  6.             AND leaveinfo.f_inputtype = 'FLOW' 
  7.             OR leaveinfo.f_inputtype = 'MANUAL'
  8.     ) allData LEFT JOIN t_sys_user sysUser ON allData.f_sqrgh = sysUser.staffId 

在測試系統(tǒng)我們對兩條sql在17條數(shù)據時分別進行了測試,耗時都在0.5s以下。但在正式系統(tǒng),測試時數(shù)據量398條時,***條的執(zhí)行時間約為9.313s,第二條耗時約4.341s。

顯然,398條數(shù)據僅查詢就超過10s顯然超過了用戶的忍耐,大大影響了系統(tǒng)的性能,在用戶體驗大打折扣。

首先我們梳理一下sql,以***條為例,我們關聯(lián)查詢了多張表,而這多張表是否必要,是否有從邏輯角度優(yōu)化的可能。

我們查詢的主表是離職信息表,關聯(lián)了檔案、運行、流程定義三張表,***又增加了前文提出的數(shù)據權限限制,關聯(lián)到用戶表。關聯(lián)檔案我們是希望通過檔案查詢出離職人員的信息,關聯(lián)運行表信息則是希望查詢出當前辦理者和當前辦理階段,關于流程定義表則是希望查詢出流程定義的名稱。經過分析,我們首先發(fā)現(xiàn)這個sql是工程師從高級查詢里照搬過來的,因為高級查詢應用于所有流程,流程名需要通過processDefineId查詢,而我們的離職查詢,就是查詢的離職流程,不需要再關聯(lián)一張表去查詢。我們將這一關聯(lián)去掉,直接返回"離職流程" as processDefineName。

去掉這一關聯(lián),sql的效率有所改善,但改善并不明顯。從邏輯角度我們已經沒有優(yōu)化的空間。所以希望從數(shù)據庫技術角度去進行優(yōu)化。在著手進行優(yōu)化之前,我們先看一看當前語句已經使用的優(yōu)化技術(對于非專業(yè)DBA首先可以想到的優(yōu)化一般是index),而在mysql里提供了explain來查詢mysql如何使用索引來處理select語句以及連接表。下面,我們看看在未優(yōu)化之前,在該查詢語句是不是有用優(yōu)化技術,又使用了哪些優(yōu)化技術。在未進行優(yōu)化之前,我們已經有了針對檔案和用戶兩張表的staffid的索引,查詢索引的sql語句如下:

  1. show index from t_per_staffinfo 

如下圖:

 

 

以及user表的索引:


查詢語句中還有兩張表分別為t_bpm_process_define和t_bpm_process_execution,我們?yōu)槠鋭?chuàng)建索引,希望加入索引后查詢效率有所改善:

  1. ALTER TABLE t_bpm_process_execution ADD INDEX pkValue_index (pkValue); 

類似的我們?yōu)闋顟B(tài)status,以及t_bpm_process_define也加入了索引。

現(xiàn)在我們用explain看看我們目前的查詢語句,如下圖:

 

關于關聯(lián)查詢sql的一次優(yōu)化過程及其他

基于上圖我們看一下,使用explain查出的信息中的各列的含義,顧名思義,我們看下來,table指的是查詢的表名、type指的是連接使用的哪種類型(從好到差的連接類型依次是const、eq_reg、ref、range、index、all)、possible_key表示可能使用在該表中的索引、key指的是在本次查詢中實際使用到的索引(如果值為null表示沒有使用索引,mysql在很少情況下會使用未優(yōu)化的索引,但也可以使用using idex強制使用索引)、key_len表示索引長度(在不損失精度的前提下,長度越短越好)、ref則是哪一列使用了索引、rows是MySQL認為需要檢查的用來請求返回數(shù)據的長度、Extra表示關于解析查詢的額外信息。通過分析Extra,我們可以看出哪些index需要優(yōu)化以及如何優(yōu)化。

Extra的值有Distinct、Not Exist、Range cheched for each record、using filesort、using temporary、Using index、where used、system、const、eq_ref、ref、index、all。當出現(xiàn)using filesort(需要額外的步驟進行排序)、using temporary(需要臨時表存儲中間結果)時表示查詢需要進行優(yōu)化。

由圖中我們可以看出,一些索引還需要進一步優(yōu)化,但我們查詢的速率已經由近10s縮減為0.088s。對于非專業(yè)的DBA這次優(yōu)化已經算是成功了。優(yōu)化到此結束,關于更進一步優(yōu)化using temporary的問題我會進一步與DBA溝通,將優(yōu)化進行到底。

關于關聯(lián)查詢sql的一次優(yōu)化過程及其他

接下來,我們談一下查詢的基礎理論、索引對于查詢的改善和和索引的基礎知識。

對于MySQL的查詢機制,MySQL manual(7.2.1)中一段這樣的描述:

“The tables are listed in the output in the order that MySQL would read them while processing the query. MySQL resolves all joins using a single-sweep multi-join method. This means that MySQL reads a row from the first table, then finds a matching row in the second table, then in the third table, and so on. When all tables are processed, MySQL outputs the selected columns and backtracks through the table list until a table is found for which there are more matching rows. The next row is read from this table and the process continues with the next table.”

我們從第三句開始做一下簡單的翻譯:Mysql從***張表讀取***行數(shù)據,然后在第二張表中查找匹配行,然后在查找第三張表,以此類推。當所有表處理完畢,Mysql輸出選中的列然后回溯表的列表一直到能夠匹配更多行的表出現(xiàn)。從這張表中讀取下一行,然后繼續(xù)查詢下一張表。這個關聯(lián)查詢的過程的關鍵就是從上一張表來查詢當前表的內容。

了解到從上一張表查詢當前表的原理后,我們創(chuàng)建index的目的就是告訴MySQL如何直接查詢下一張表的數(shù)據,以及如何按照需要的順序來join下一張表。

上文中我們也介紹了查看和創(chuàng)建索引的語句,更進一步了解其他操作方法可以查看一些關于索引的基礎知識。

責任編輯:Ophira 來源: 51CTO
相關推薦

2014-11-12 11:17:32

網站遷移運維

2015-02-27 10:14:33

2017-07-25 15:35:07

MysqlMysql優(yōu)化LIMIT分頁

2020-02-10 10:15:31

技術研發(fā)指標

2021-05-11 11:05:43

SAL子查詢

2022-09-15 10:02:58

測試軟件

2013-11-20 13:55:01

代碼提交優(yōu)秀

2020-11-06 00:45:29

Linux服務器swap內存

2010-06-03 09:24:46

Oracle

2015-12-10 10:13:22

2009-12-25 14:46:53

Windows 7文件關聯(lián)

2021-02-06 13:45:59

SQL子查詢數(shù)據庫

2012-06-05 02:20:24

JPAJava查詢語言

2017-11-30 09:52:26

SQLSQL Monitor查詢優(yōu)化

2025-08-07 08:01:28

2021-10-12 05:00:27

PandasSQL查詢

2009-09-25 10:22:35

Hibernate多表

2015-05-15 10:04:28

localhost

2014-12-11 10:31:22

網絡優(yōu)化KVM

2021-07-30 07:28:16

SQL優(yōu)化日志
點贊
收藏

51CTO技術棧公眾號

欧美97人人模人人爽人人喊视频| 国产午夜精品一区二区理论影院| 国产精品高潮久久| 亚洲欧美激情一区二区| 国产青春久久久国产毛片| 天堂中文字幕在线观看| 天天射天天综合网| 亚洲精品99999| 羞羞的视频在线| 搞黄网站在线看| 国产精品午夜春色av| 成人欧美一区二区三区视频xxx | 搡的我好爽在线观看免费视频| 毛片大全在线观看| 国产精品免费av| 国产一区在线免费| 国产乱淫av片免费| 视频在线观看一区| 午夜精品国产精品大乳美女| 国产三级精品三级观看| 天堂综合网久久| 日韩一区二区影院| 91国产精品视频在线观看| 91九色porn在线资源| 日韩一区有码在线| 无码免费一区二区三区免费播放 | 国产男女猛烈无遮挡| 亚洲欧美日韩国产| 久久久久久久久久国产| 91麻豆精品成人一区二区| 经典一区二区| 精品视频久久久久久久| 91porn在线| 国产日韩一区二区三免费高清| 欧洲精品视频在线观看| 中文字幕日本最新乱码视频| 国产精品一品| 亚洲综合精品自拍| 国产资源第一页| www.在线视频| 亚洲码国产岛国毛片在线| 夜夜爽www精品| 在线a人片免费观看视频| 国产三级精品视频| 欧洲高清一区二区| 国产乱理伦片a级在线观看| 久久综合久久综合久久| 久久久久久久久久久久久久久久av | 国产精品免费观看高清| 精品区在线观看| 国产风韵犹存在线视精品| 亚洲一区二区三区xxx视频| 亚洲一卡二卡在线观看| 久久99国产精品免费| 国产裸体写真av一区二区| 做爰视频毛片视频| 美女精品自拍一二三四| 国产日韩在线看片| 国产情侣av在线| 国产aⅴ综合色| 国产欧美一区二区视频| 丰满人妻妇伦又伦精品国产| 99视频在线精品| 欧美精品久久久| av片在线看| 亚洲视频免费观看| 91.com在线| 深夜成人在线| 欧美亚日韩国产aⅴ精品中极品| av网站在线不卡| 精品视频一区二区三区| 精品少妇一区二区三区免费观看 | 一区二区成人在线| 日韩欧美亚洲天堂| 91九色综合| 日韩一卡二卡三卡四卡| 亚洲精品中文字幕在线播放| 国产一区二区三区四区五区传媒 | 亚洲精品9999| av在线免费观看网址| 亚洲成人tv网| 99视频精品免费| 国产亚洲字幕| 精品一区二区三区电影| 国产日产在线观看| 亚洲国产专区校园欧美| 国产精品久久久久77777| 国产精品伊人久久| 91伊人久久大香线蕉| 色噜噜一区二区| 日韩免费影院| 欧美天堂亚洲电影院在线播放| 人妻体体内射精一区二区| 日韩在线麻豆| 超薄丝袜一区二区| 日韩视频在线观看一区| 国产一区二区网址| 欧美精品免费观看二区| 超碰免费在线播放| 色综合天天狠狠| 99国产精品免费视频| 国内精品视频在线观看| 欧美激情一区二区三区高清视频| 99re国产在线| 欧美美女被草| 亚洲第一区中文99精品| 欧美一区二区三区粗大| 亚洲二区在线| 成人妇女淫片aaaa视频| 久久久久久久久亚洲精品| 亚洲图片你懂的| 91看片就是不一样| 成人在线超碰| 久久中文字幕视频| 中文在线观看免费高清| 99久久精品99国产精品| 中文字幕免费高| 美女网站视频一区| 亚洲精品资源美女情侣酒店| 免费一级全黄少妇性色生活片| 日本在线不卡一区| 美乳视频一区二区| av福利在线导航| 欧美一卡二卡在线观看| 男人的天堂av网| 亚洲欧美日韩国产一区| 国产中文一区二区| 天堂va在线| 制服.丝袜.亚洲.另类.中文| 欧美午夜激情影院| 日韩在线一二三区| 欧美精品国产精品久久久| 亚洲一级少妇| 日韩精品久久久久久久玫瑰园| 久久久久亚洲天堂| 国产精品一区二区三区网站| 在线视频福利一区| 婷婷久久免费视频| 色偷偷88888欧美精品久久久| 免费黄色av片| 国产农村妇女毛片精品久久麻豆 | 国产免费av国片精品草莓男男| 中文字幕精品www乱入免费视频| 无码人妻aⅴ一区二区三区有奶水 无码免费一区二区三区 | 青青草手机在线| 精品成人av一区| 北岛玲一区二区| 国产农村妇女精品一二区| 精品国产乱码久久久久久郑州公司| 丁香花视频在线观看| 精品蜜桃在线看| 国产真实的和子乱拍在线观看| 国产高清精品久久久久| 欧美一区二区三区综合| 欧洲一区在线| 久久男人的天堂| 天堂av资源在线| 色综合视频在线观看| 欧美18—19性高清hd4k| 另类成人小视频在线| 国产91av视频在线观看| 欧美高清hd| 久久久久久久久久久久久久久久久久av | 亚洲国产高潮在线观看| 二区视频在线观看| 欧美激情综合在线| 久久婷五月综合| 中文无码久久精品| 国产日韩欧美一区二区| a一区二区三区| 色婷婷av一区二区三区久久| 99热这里只有精| 精品久久久久久久久国产字幕| 丝袜美腿中文字幕| 久久国产精品第一页| 国产激情在线看| 综合国产视频| 91在线观看免费| 日本乱码一区二区三区不卡| 一区二区三区www| www.成人免费视频| 欧美日韩国产精品专区 | 国产美女视频一区二区三区| 91精品视频网| 台湾佬中文在线| 亚洲欧美福利一区二区| 亚洲乱码国产乱码精品精大量| 蜜桃视频免费观看一区| 69sex久久精品国产麻豆| 国产成人影院| 产国精品偷在线| 色豆豆成人网| 国语自产精品视频在免费| 成人av一区| 亚洲精品美女视频| 国产精品热久久| 色综合视频一区二区三区高清| 少妇aaaaa| 国产三级精品视频| 91丨porny丨对白| 久久激情五月激情| 免费在线激情视频| 国产精品第十页| 亚洲欧美国产精品桃花| 日韩极品在线| 俄罗斯精品一区二区三区| 国产精品黄色片| 欧美中文在线观看国产| 国产美女一区视频| 欧美猛少妇色xxxxx| yiren22综合网成人| 亚洲国产精品一区二区久| 国产乱码精品一区二三区蜜臂 | 九九在线高清精品视频| 成人做爰66片免费看网站| 欧美视频第一| 国产精品久久久久久久久久99| 98色花堂精品视频在线观看| 免费成人高清视频| 91ph在线| 久久久一区二区三区| 国产精品video| 亚洲一级中文字幕| 久久66热re国产| 成人在线观看黄| 91久久久久| 欧美另类videosbestsex日本| 国产影视精品一区二区三区| 狠狠干一区二区| 91精品短视频| 91超碰在线电影| 中文字幕日本一区| 国产精品你懂得| 日韩av首页| 国产精品久久电影观看| 日韩欧美另类一区二区| 欧美在线xxx| 绿色成人影院| 2018日韩中文字幕| www在线看| 欧美激情一区二区三区久久久| h片在线播放| 美女精品视频一区| 成人无遮挡免费网站视频在线观看| 中文字幕亚洲一区在线观看| 国产女主播在线写真| 国产亚洲欧美aaaa| 浮生影视网在线观看免费| 亚洲天堂av图片| 成人高清免费观看mv| 日韩中文字幕视频| 成人资源www网在线最新版| 国产一区二区三区中文| 91网页在线观看| 日韩在线观看免费高清完整版| 色哟哟免费在线观看| 久久精品福利视频| 羞羞污视频在线观看| 久久久久久成人精品| av影院在线免费观看| 欧美国产视频日韩| av在线网页| 国产成人avxxxxx在线看 | 亚洲欧美电影一区二区| 国产精品三区在线观看| 亚洲成人一区二区在线观看| 一级片中文字幕| 在线观看91精品国产入口| 一区二区美女视频| 欧美成人官网二区| 三级黄视频在线观看| 中国日韩欧美久久久久久久久| 久操视频在线| 久久免费视频在线| 本网站久久精品| 亚洲qvod图片区电影| 久久久免费毛片| 日本精品二区| 一区二区三区在线| 少妇高潮喷水在线观看| 青草国产精品久久久久久| 红桃视频一区二区三区免费| 波多野结衣中文字幕一区| 亚洲人成人无码网www国产| 中文字幕亚洲不卡| 九九热国产视频| 欧洲中文字幕精品| 亚洲伦理在线观看| 国产一区二区三区视频免费| 尤物yw193can在线观看| 欧洲美女免费图片一区| 国产高清精品二区| 免费av在线一区二区| 亚洲激情中文| 国产成人久久777777| 国产成人免费在线视频| a资源在线观看| 午夜久久久影院| 91精品人妻一区二区三区果冻| 亚洲第一中文字幕在线观看| 91精彩在线视频| 26uuu另类亚洲欧美日本一| avtt久久| 午夜精品视频在线观看一区二区| 亚洲视频免费| 99re6在线观看| 久久久91精品国产一区二区三区| 麻豆影视在线播放| 欧美视频在线播放| 日色在线视频| 久久久久国产一区二区三区| 57pao成人永久免费| 免费成人深夜夜行视频| 激情国产一区| 操人视频免费看| 国产精品久久久久桃色tv| 手机看片久久久| 亚洲国产精品系列| 国产精品186在线观看在线播放| 91精品国产综合久久香蕉最新版| 亚洲人和日本人hd| 每日在线观看av| 丁香桃色午夜亚洲一区二区三区| 可以免费看av的网址| 在线亚洲人成电影网站色www| 日本高清视频网站| 九九精品在线观看| 国产一区二区三区免费在线| 亚洲一区不卡在线| 秋霞成人午夜伦在线观看| 男女黄床上色视频| 精品国产老师黑色丝袜高跟鞋| 精品久久久久久亚洲综合网站 | 欧美一区二区三区播放老司机| 在线观看黄色av| 国产精品中文字幕在线| 欧美色图国产精品| 天天碰免费视频| 国产女同互慰高潮91漫画| 国产99免费视频| 亚洲一级免费视频| 色8久久影院午夜场| 日本一区二区免费看| 久久这里有精品15一区二区三区| 欧美一区二区三区成人精品| 精品久久中文字幕| 欧美日本韩国一区二区| 日韩av免费在线观看| 国产在线观看91一区二区三区| 免费激情视频在线观看| 国产日韩精品视频一区| 中文字幕观看视频| 精品国内亚洲在观看18黄| 精品久久国产一区| www.国产在线视频| 99精品欧美一区二区三区小说 | 国产揄拍国内精品对白| 欧美偷拍第一页| 欧美精品一区二区三区蜜桃视频 | 欧美在线视屏| 大尺度在线观看| 欧美日韩美女视频| 国产在线资源| 成人淫片在线看| 亚洲黄色毛片| 欧美激情亚洲色图| 51久久夜色精品国产麻豆| 人人澡人人添人人爽一区二区| 国产亚洲精品久久飘花| 老司机免费视频久久| 女性裸体视频网站| 精品女同一区二区| 欧美日韩电影免费看| 在线天堂一区av电影| 国产福利一区二区三区视频在线| 色播视频在线播放| 一区二区在线视频播放| 嫩呦国产一区二区三区av| 欧美黑人经典片免费观看| 日本一区二区动态图| 国产乱色精品成人免费视频| 91产国在线观看动作片喷水| 成人女性视频| 永久免费未满蜜桃| 欧美影片第一页| 日本资源在线| 日本视频精品一区| 粉嫩aⅴ一区二区三区四区| 久草手机在线视频| 欧美成人黑人xx视频免费观看| 五月综合久久| 国产在线观看中文字幕| 欧美日韩免费区域视频在线观看| 北岛玲日韩精品一区二区三区| 99一区二区三区| 日本女优在线视频一区二区| av资源吧首页| 日韩在线中文字幕| 一道本一区二区三区| 亚洲综合中文网|