精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品美女免费看| 欧美一区二区在线不卡| 日本一区二区三区视频在线观看 | 91视频最新| 日韩黄色一级大片| 久久密一区二区三区| 欧美xingq一区二区| 漂亮人妻被中出中文字幕| 国产精品理论在线| 激情五月综合婷婷| 色综合天天做天天爱| 宅男在线精品国产免费观看| 日批视频免费播放| 久久精品国产一区二区| 久久久综合免费视频| 男人天堂资源网| 精品国产一区二区三区不卡蜜臂| 欧美性一级生活| 免费看欧美黑人毛片| 91在线网址| 91色在线porny| 97久久天天综合色天天综合色hd| 一二三区免费视频| 亚洲国产片色| 久久精品美女视频网站| 成年人免费观看视频网站 | 99在线观看视频网站| 欧产日产国产69| 伊人久久大香线蕉av超碰演员| 中文字幕久热精品在线视频| 黄色正能量网站| 欧美变态网站| 亚洲国产精品成人精品| 26uuu国产| 九色精品蝌蚪| 91麻豆精品国产91久久久使用方法| 欧美一级黄色片视频| 成年人视频免费在线播放| 综合亚洲深深色噜噜狠狠网站| 免费亚洲精品视频| 少妇av一区二区| 国产成人免费视频一区| 亚洲一区二区三区在线视频| 一级黄色大毛片| 蜜臀91精品一区二区三区| 日本aⅴ大伊香蕉精品视频| 国产精品第108页| 欧美午夜a级限制福利片| 欧美巨乳美女视频| 欧美激情图片小说| 国产精品精品| 久久高清视频免费| 四虎永久免费在线| 欧美成人高清| 久久久久久久久亚洲| 国产真实乱偷精品视频| 影音先锋久久精品| 8090成年在线看片午夜| 国产区在线观看视频| 亚洲一区二区三区高清| 日本久久久久久久| 国产情侣免费视频| 久久99深爱久久99精品| 91亚洲精品一区二区| 午夜老司机福利| 不卡的av电影在线观看| 玛丽玛丽电影原版免费观看1977| 午夜国产在线观看| 国产日韩综合av| 一区二区三区四区欧美| 国产激情在线| 亚洲一区二区四区蜜桃| 亚洲欧洲日产国码无码久久99| 在线男人天堂| 欧洲精品中文字幕| 日本在线观看视频一区| 国产成人在线中文字幕| 亚洲精品视频久久| 亚洲欧洲综合网| 欧美日韩福利| 欧洲亚洲妇女av| 一区二区三区免费在线视频| 国产精品1区2区3区在线观看| 国产精品日韩一区二区免费视频| 深夜福利在线观看直播| 性色一区二区三区| 国产成人精品一区二区| 国产v在线观看| 91婷婷韩国欧美一区二区| 亚洲一区二区精品在线观看| 国产网红在线观看| 欧美系列亚洲系列| 不许穿内裤随时挨c调教h苏绵| 杨幂一区二区三区免费看视频| 色哟哟亚洲精品一区二区| 久久久久久久久久久久久久免费看 | 少妇精品无码一区二区| 中文字幕亚洲影视| 久久综合网hezyo| 日本免费在线观看视频| 寂寞少妇一区二区三区| 精品伊人久久大线蕉色首页| 色的视频在线免费看| 午夜在线成人av| 看看黄色一级片| 亚洲最好看的视频| 欧美多人爱爱视频网站| 一区二区视频免费| 99精品视频一区| 中文字幕第50页| 国产亚洲一区二区手机在线观看| 欧美大肚乱孕交hd孕妇| 美国精品一区二区| 国产精品亚洲综合久久| http;//www.99re视频| 亚洲视频tv| 欧美午夜宅男影院在线观看| 欧美日韩一区二区区别是什么| 狠狠做深爱婷婷综合一区| 97久久伊人激情网| 性欧美8khd高清极品| 国产精品网站在线| 99福利在线观看| 国内精品偷拍| 欧美另类老女人| 一级片在线免费观看视频| 久久久久久久久久看片| 秋霞无码一区二区| 一区中文字幕电影| 欧美精品在线免费播放| 亚洲天堂avav| 日本一区二区视频在线观看| www一区二区www免费| av一级亚洲| 欧美另类极品videosbestfree| 97超碰人人草| 国产精品九色蝌蚪自拍| www.夜夜爽| 成人羞羞在线观看网站| 国产精品偷伦视频免费观看国产| 国外av在线| 色一情一乱一乱一91av| aa片在线观看视频在线播放| 一本色道久久| 美日韩精品免费| 自拍偷拍亚洲视频| 日韩精品视频在线观看网址| 国产精品xxxx喷水欧美| 成人免费观看男女羞羞视频| 无颜之月在线看| 一区二区三区欧洲区| 久久久久久国产免费| 亚洲精品网站在线| 亚洲国产精品久久不卡毛片 | 国产精品一国产精品| 日本三级久久久| 福利在线视频导航| 欧美久久久久久久久久| 九九热最新地址| 国产成人精品影视| 久久99中文字幕| 综合干狼人综合首页| 国产成人aa精品一区在线播放| 九色在线播放| 欧美日韩综合一区| 欧美特黄一级片| 国产精品18久久久久久vr| 毛片在线播放视频| 国产乱码精品一区二区亚洲 | 国产一级不卡毛片| 日韩免费一区| 99久久自偷自偷国产精品不卡| 爱看av在线| 亚洲人成毛片在线播放| 6—12呦国产精品| 夜色激情一区二区| 久久国产精品影院| 精品亚洲成a人在线观看| 性一交一乱一伧国产女士spa| 欧美一区二区三区红桃小说| 国产精品久久久久9999| 污污网站在线看| 亚洲精品小视频| 国产日韩免费视频| 色综合久久99| 精品亚洲乱码一区二区| 成人黄色一级视频| 在线观看国产中文字幕| 黄色精品网站| 无码免费一区二区三区免费播放 | 精品一区二区中文字幕| 久久一区91| 久久av一区二区三区亚洲| 久久亚洲国产精品尤物| 2020久久国产精品| 大片免费在线看视频| 亚洲国产精品电影在线观看| 中文字幕人妻互换av久久| 亚洲一区二三区| 免费看一级黄色| 97成人超碰视| 夜夜爽久久精品91| 日韩和的一区二区| 男女视频网站在线观看| 五月天综合网站| 欧美性bbwbbwbbwhd| 亚洲1区在线| 国产精品无码专区在线观看| 1234区中文字幕在线观看| 日韩在线www| 伦理片一区二区三区| 日韩精品一区二区三区视频| 一级特黄aa大片| 色婷婷国产精品久久包臀| 久久久久亚洲av成人片| 国产精品日本一区二区三区在线| 日韩欧美在线观看| 五月天婷婷色综合| 中文字幕av资源一区| 精品人妻一区二区三区香蕉| 国产成人午夜精品5599| 国产三级国产精品国产专区50| 国产精品一卡| 久草热视频在线观看| 在线精品视频在线观看高清| 一本一道久久a久久综合精品| 亚洲最大在线| 麻豆传媒一区二区| 欧美一区二区三区红桃小说| 国产久一道中文一区| 91嫩草精品| 成人av免费电影| 欧美视频精品全部免费观看| 国产狼人综合免费视频| 高清av一区二区三区| 欧日韩不卡在线视频| 在线观看爽视频| 91成品人片a无限观看| 9999精品成人免费毛片在线看 | 国产精品一二三四五| 四季av一区二区三区| 麻豆成人免费电影| 青青草国产精品一区二区| 久久高清无码视频| 中文字幕久久午夜不卡| 国产精品久久久久久久av| 国产午夜精品一区二区| 欧美日韩高清丝袜| 欧美高清一级片在线观看| 欧美黄色高清视频| 国产精品美女一区二区在线观看| 午夜精产品一区二区在线观看的| 国产亚洲女人久久久久毛片| 人妻精品久久久久中文| 国产精品国产精品国产专区不片| 成人精品一二三区| 自拍偷拍亚洲欧美日韩| 老司机成人免费视频| 亚洲精品视频自拍| 久视频在线观看| 午夜精品久久久| 日本特级黄色片| 一道本成人在线| 狠狠躁夜夜躁人人爽视频| 精品视频1区2区| 99久久精品国产成人一区二区| 日韩三级视频中文字幕| 免费看国产片在线观看| 精品夜色国产国偷在线| 爱久久·www| 久久亚洲欧美日韩精品专区| 免费毛片在线看片免费丝瓜视频| 国内免费精品永久在线视频| 美脚恋feet久草欧美| 国产欧美日韩丝袜精品一区| 免费一级欧美片在线观看网站| 国产综合 伊人色| 欧美日韩在线二区| 国产女人18毛片| 免费日韩视频| 91亚洲一区二区| 99精品视频在线观看| 少妇视频一区二区| 红桃视频成人在线观看| 伊人成人在线观看| 精品盗摄一区二区三区| 国产视频三级在线观看播放| 免费av一区二区| 伊人久久综合一区二区| 91系列在线观看| 综合伊思人在钱三区| 黄色一级视频播放| 久久久久国产精品一区三寸| www.污网站| 久久久精品2019中文字幕之3| 91高清免费观看| 91久久一区二区| 国产成人精品亚洲精品色欲| 亚洲欧美精品在线| 婷婷丁香在线| 国产乱肥老妇国产一区二| 亚洲性视频在线| 一本久久a久久精品vr综合 | 午夜久久久久久久久久一区二区| 国产精品熟女视频| 精品美女一区二区三区| 成人免费一区二区三区视频网站| 欧美激情综合亚洲一二区| 91天天综合| 免费看污久久久| 亚洲福利精品| 香蕉网在线视频| 国产精品免费视频一区| 手机在线看片1024| 欧美精品一区二区三区蜜桃视频| 免费黄色在线看| 国产精品久久一区主播| 色天天色综合| 日韩久久久久久久久久久久| 国产又粗又猛又爽又黄视频| 国产精品色在线观看| 日本一级二级视频| 欧美日韩高清影院| 国产免费视频在线| 欧美性受xxx| 成人偷拍自拍| 青青在线免费视频| 精一区二区三区| 欧美午夜激情影院| 色猫猫国产区一区二在线视频| 六月婷婷综合网| 欧美福利在线观看| 日韩中文字幕一区二区高清99| 亚洲精品影院| 精一区二区三区| 日本美女黄色一级片| 欧美高清视频www夜色资源网| aaa日本高清在线播放免费观看| 欧美在线国产精品| 欧美日日夜夜| 一女被多男玩喷潮视频| 91在线视频官网| av黄色在线播放| 亚洲全黄一级网站| 三级成人在线| 亚洲激情啪啪| 国产专区欧美精品| 久草网站在线观看| 日韩美女视频在线| 久色国产在线| 国产精品一码二码三码在线| 亚洲国产日韩在线| 少妇光屁股影院| 色噜噜夜夜夜综合网| 成人在线观看一区| 国产日韩欧美在线| 欧美激情综合色综合啪啪| 911亚洲精选| 午夜精品久久久久久久久| 日韩电影网址| 国产精品亚洲第一区| 一个色综合网| 亚洲熟女一区二区| 欧美性xxxxx| 天堂аⅴ在线地址8| 亚洲综合成人婷婷小说| 精品电影一区| 日本高清www| 欧美久久久久久蜜桃| 草莓视频丝瓜在线观看丝瓜18| 狠狠色综合欧美激情| 日韩电影在线一区二区| 99久久久免费精品| 精品av综合导航| 色婷婷综合久久久中字幕精品久久| 亚洲bbw性色大片| 国产高清精品久久久久| 天堂网av手机版| 日韩有码片在线观看| 99精品中文字幕在线不卡| 国产91在线视频观看| 国产精品乱码一区二三区小蝌蚪| 性中国古装videossex| 热久久免费视频精品| 1024精品久久久久久久久| 中国一级特黄录像播放| 欧美午夜理伦三级在线观看| 羞羞污视频在线观看| 另类视频在线观看+1080p| 久久99精品国产91久久来源| 97超碰人人干| 色偷偷噜噜噜亚洲男人的天堂| www.豆豆成人网.com| 手机在线免费观看毛片| 亚洲午夜久久久久| 日本在线免费看| 久久综合九色99| 国产jizzjizz一区二区| 中文字幕一区二区久久人妻| 国产+成+人+亚洲欧洲|