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

mysql樹(shù)目錄查詢(xún)語(yǔ)句優(yōu)化提高查詢(xún)效率

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

在做mysql樹(shù)目錄查詢(xún)的時(shí)候遇到了一個(gè)很奇妙的現(xiàn)象

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

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

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

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

然后就把sql語(yǔ)句改成了這樣

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

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

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

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

這個(gè)是可以直接寫(xiě)在sql語(yǔ)句內(nèi)的,不過(guò)有個(gè)缺點(diǎn):完全依靠排序,如果有子級(jí)在父級(jí)上面就會(huì)搜不到

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 
//

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

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

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

相關(guān)文章

  • MySQL中臨時(shí)表的使用示例

    MySQL中臨時(shí)表的使用示例

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

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

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

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

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

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

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

    MySQL5.7完全卸載步驟詳解

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

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

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

    MySQL中union和unionall區(qū)別

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

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

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

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

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

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

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

最新評(píng)論

讷河市| 五大连池市| 安平县| 外汇| 太康县| 曲周县| 江阴市| 永春县| 米易县| 鲜城| 彩票| 寻甸| 高台县| 沁水县| 柳河县| 香河县| 抚顺市| 大埔区| 儋州市| 漳州市| 平顺县| 罗城| 阿图什市| 阿巴嘎旗| 江达县| 樟树市| 军事| 府谷县| 方城县| 仪征市| 九龙坡区| 应用必备| 南昌市| 桐梓县| 宜兴市| 台山市| 武功县| 双江| 沛县| 池州市| 奉节县|