最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql樹目錄查詢語句優(yōu)化提高查詢效率

 更新時間:2024年10月11日 11:17:43   作者:guoqing2016  
在諸多的管理類,辦公類等系統(tǒng)中,樹形結(jié)構(gòu)展示隨處可見,本文主要介紹了mysql樹目錄查詢語句優(yōu)化提高查詢效率的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在做mysql樹目錄查詢的時候遇到了一個很奇妙的現(xiàn)象

我是先創(chuàng)建了一個樹目錄查詢的函數(shù)叫 getDeptList()然后單獨執(zhí)行查詢函數(shù)的效率很快

但當(dāng)我放到sql語句里加個判斷執(zhí)行就會很慢了

累計查詢出20條數(shù)據(jù)竟然要了0.5秒,那如果查出幾百條不就1秒了 -_-||

后來想了一下可能是每次查詢self_dept表的時候都會再執(zhí)行一遍樹目錄的函數(shù)

然后就把sql語句改成了這樣

可以看到,速度大幅度降低直接到了0.06

這里的優(yōu)化思路是先計算好函數(shù)的結(jié)果,讓函數(shù)只執(zhí)行一遍,而不是根據(jù)self_dept表的判斷進行多次計算

這里順便記錄一下mysql樹目錄排序的方法

sql:

select dept_id from (
    select t1.dept_id,
    if((find_in_set(parent_id, @pids) > 0 or find_in_set(dept_id, @pids) > 0), @pids := concat(@pids, ',', dept_id), 0) as ischild
    from (
        select dept_id,parent_id,dept_name from basis_sys_dept order by parent_id, dept_id
         ) t1,
			(select @pids := id) t2
		) t3 where ischild != 0

這個是可以直接寫在sql語句內(nèi)的,不過有個缺點:完全依靠排序,如果有子級在父級上面就會搜不到

sql:

delimiter // 
CREATE FUNCTION `getLst`(rootId INT) 
 RETURNS varchar(1000) 
 BEGIN 
   DECLARE sTemp VARCHAR(1000); 
  DECLARE sTempChd VARCHAR(1000); 
 
  SET sTemp = '$'; 
  SET sTempChd =cast(rootId as CHAR); 

  WHILE sTempChd is not null DO 
    SET sTemp = concat(sTemp,',',sTempChd); 
    SELECT group_concat(dept_id) INTO sTempChd FROM self_dept where FIND_IN_SET(parent_id,sTempChd)>0; 
  END WHILE; 
  RETURN sTemp; 
END 
//

這個是在mysql里創(chuàng)建一個函數(shù),可以暫無發(fā)現(xiàn)什么bug(如有發(fā)現(xiàn)bug我會回來修改的)

(在復(fù)制使用的時候記得修改里面的表名和表字段 我的表:self_dept,id:dept_id,父級id:parent_id)

到此這篇關(guān)于mysql樹目錄查詢語句優(yōu)化的文章就介紹到這了,更多相關(guān)mysql樹目錄查詢語句優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中臨時表的使用示例

    MySQL中臨時表的使用示例

    這篇文章主要介紹了MySQL中的內(nèi)存臨時表的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-11-11
  • mysql 5.7.27 winx64安裝配置方法圖文教程

    mysql 5.7.27 winx64安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 5.7.27 winx64安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Linux系統(tǒng)下實現(xiàn)遠程連接MySQL數(shù)據(jù)庫的方法教程

    Linux系統(tǒng)下實現(xiàn)遠程連接MySQL數(shù)據(jù)庫的方法教程

    MySQL默認root用戶只能本地訪問,不能遠程連接管理mysql數(shù)據(jù)庫,Linux如何開啟mysql遠程連接?下面這篇文章主要給大家介紹了在Linux系統(tǒng)下實現(xiàn)遠程連接MySQL數(shù)據(jù)庫的方法教程,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句

    MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句

    MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的方法,需要的朋友可以參考下。
    2009-12-12
  • MySQL5.7完全卸載步驟詳解

    MySQL5.7完全卸載步驟詳解

    這篇文章主要介紹了MySQL5.7完全卸載的詳細步驟以及把中間遇到的問題做了分析,需要的朋友跟著操作下吧。
    2018-02-02
  • MySQL字符串函數(shù)詳解(推薦)

    MySQL字符串函數(shù)詳解(推薦)

    下面小編就為大家?guī)硪黄狹ySQL字符串函數(shù)詳解(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • MySQL中union和unionall區(qū)別

    MySQL中union和unionall區(qū)別

    本文主要介紹了MySQL中union和unionall區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • MySQL可直接使用的查詢表的列信息(實現(xiàn)方案)

    MySQL可直接使用的查詢表的列信息(實現(xiàn)方案)

    本文介紹了如何使用SQL快速將下劃線命名的表字段轉(zhuǎn)換為駝峰命名格式,包括確定下劃線位置、找到第一個字符、截取并拼接字符串等步驟,通過使用LOCATE、CONCAT、UCASE和LOWER等函數(shù),可以實現(xiàn)高效的字段命名轉(zhuǎn)換,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Mysql中新建用戶及授權(quán)的方法分享

    Mysql中新建用戶及授權(quán)的方法分享

    這篇文章給大家匯總介紹了Mysql中新建用戶及授權(quán)的方法,首先介紹的是作者自己的項目經(jīng)歷,后面附上了參考文章,希望能對大家學(xué)習(xí)mysql有所幫助。
    2016-07-07
  • 一些mysql啟動參數(shù)的說明和優(yōu)化方法

    一些mysql啟動參數(shù)的說明和優(yōu)化方法

    要求MySQL能有的連接數(shù)量。當(dāng)主要MySQL線程在一個很短時間內(nèi)得到非常多的連接請求,這就起作用,然后主線程花些時間(盡管很短)檢查連接并且啟動一個新線程。
    2011-04-04

最新評論

绥宁县| 晴隆县| 莱州市| 海门市| 阜新市| 小金县| 休宁县| 诸城市| 吕梁市| 阿鲁科尔沁旗| 军事| 天长市| 盐边县| 松阳县| 潍坊市| 枝江市| 江华| 西盟| 长阳| 阜新| 龙州县| 安化县| 射阳县| 象山县| 西乌珠穆沁旗| 鸡东县| 图们市| 平阳县| 平湖市| 武山县| 扎囊县| 嘉义市| 岑巩县| 温州市| 黑水县| 伊金霍洛旗| 台南县| 双辽市| 遂昌县| 湘潭市| 类乌齐县|