欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

這里順便記錄一下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

這個(gè)是可以直接寫在sql語句內(nèi)的,不過有個(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ù),可以暫無發(fā)現(xiàn)什么bug(如有發(fā)現(xiàn)bug我會(huì)回來修改的)

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

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

相關(guān)文章

  • mysql數(shù)據(jù)庫無法被其他ip訪問的解決方法

    mysql數(shù)據(jù)庫無法被其他ip訪問的解決方法

    這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫無法被其他ip訪問的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • memcached的學(xué)習(xí)過程

    memcached的學(xué)習(xí)過程

    本篇文章是對(duì)筆者學(xué)習(xí)memcached的經(jīng)歷進(jìn)行了介紹,需要的朋友參考下
    2013-06-06
  • MySQL修改數(shù)據(jù)的超詳細(xì)教程

    MySQL修改數(shù)據(jù)的超詳細(xì)教程

    在MySQL中可以使用?UPDATE?語句來修改、更新一個(gè)或多個(gè)表的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL修改數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • MySQL中union和order by同時(shí)使用的實(shí)現(xiàn)方法

    MySQL中union和order by同時(shí)使用的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狹ySQL中union和order by同時(shí)使用的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn)

    MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn)

    這篇文章主要介紹了MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MySQL百萬級(jí)數(shù)據(jù)分頁查詢優(yōu)化方案

    MySQL百萬級(jí)數(shù)據(jù)分頁查詢優(yōu)化方案

    在mysql中l(wèi)imit可以實(shí)現(xiàn)快速分頁,但是如果數(shù)據(jù)到了幾百萬時(shí)我們的limit必須優(yōu)化才能有效的合理的實(shí)現(xiàn)分頁了,否則可能卡死你的服務(wù)器哦。
    2017-11-11
  • 簡單了解MySQL SELECT執(zhí)行順序

    簡單了解MySQL SELECT執(zhí)行順序

    MySQL數(shù)據(jù)據(jù)庫中我們經(jīng)常使用SQL SELECT語句來查詢數(shù)據(jù),那么關(guān)于它的執(zhí)行順序,下面小編來帶大家簡單了解一下
    2019-05-05
  • mysql unique option prefix myisam_recover instead of myisam-recover-options的解決方法

    mysql unique option prefix myisam_recover instead of myisam-

    Using unique option prefix myisam_recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead
    2016-05-05
  • 你需要理解的關(guān)于MySQL的鎖知識(shí)

    你需要理解的關(guān)于MySQL的鎖知識(shí)

    鎖是MySQL里面最難理解的知識(shí),但是又無處不在。一開始接觸鎖的時(shí)候,感覺被各種鎖類型和名詞弄得暈頭轉(zhuǎn)向,下面小編來簡單介紹一下
    2019-05-05
  • mysql雙向加密解密方式用法詳解

    mysql雙向加密解密方式用法詳解

    這篇文章主要介紹了mysql雙向加密解密方式用法,需要的朋友可以參考下
    2014-04-04

最新評(píng)論