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

Mysql查詢語(yǔ)句如何實(shí)現(xiàn)無(wú)限層次父子關(guān)系查詢

 更新時(shí)間:2023年07月12日 08:58:47   作者:HaSaKing_721  
這篇文章主要介紹了Mysql查詢語(yǔ)句如何實(shí)現(xiàn)無(wú)限層次父子關(guān)系查詢問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、前言

單表存儲(chǔ)上下級(jí)關(guān)系,使用mysql 內(nèi)置函數(shù)循環(huán)遞歸查出來(lái)

二、相關(guān)語(yǔ)法函數(shù)介紹

  • @

 @是用戶變量,@@是系統(tǒng)變量。

  • := 

不只在set和update時(shí)時(shí)賦值的作用,在select也是賦值的作用。

  • group_concat() 

 將group by產(chǎn)生的同一個(gè)分組中的值連接起來(lái),返回一個(gè)字符串結(jié)果。

  • FIND_IN_SET()

查詢字段(strlist)中包含(str)的結(jié)果,返回結(jié)果為null或記錄

三、具體實(shí)現(xiàn)

創(chuàng)建表

查詢父級(jí)為 2 的下級(jí)  無(wú)限級(jí)查詢

SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( descendant ) FROM relation WHERE FIND_IN_SET( ancestor, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		relation,
		( SELECT @ids := 2, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 

列表化 

SELECT
	descendant.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( descendant ) FROM relation WHERE FIND_IN_SET( ancestor, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		relation,
		( SELECT @ids := 2, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
		) descendant,
	sys_dept_relation DATA 
WHERE
	FIND_IN_SET( DATA.descendant, descendant._ids ) 
ORDER BY
	LEVEL,
	DATA.descendant

查詢ID為 8 的上級(jí)  無(wú)限級(jí)查詢

SELECT
		@id AS _id,
		( SELECT @id := ancestor FROM relation WHERE descendant = @id ) AS _pid,
		@l := @l + 1 AS LEVEL 
	FROM
		relation,
		( SELECT @id := 8, @l := 0 ) b 
	WHERE
		@id > 0 

四、效率問(wèn)題

我目前測(cè)試表有8千多數(shù)據(jù)量

EXPLAN 相關(guān)參數(shù)

Select_type:

  • PRIMARY:查詢中最外層的SELECT(如兩表做UNION或者存在子查詢的外層的表操作為PRIMARY,內(nèi)層的操作為UNION)
  • DERIVED:被驅(qū)動(dòng)的SELECT子查詢(子查詢位于FROM子句)
  • UNCACHEABLE SUBQUERY:一個(gè)子查詢的結(jié)果不能被緩存,必須重新評(píng)估外鏈接的第一行

Type:

  • NULL: MySQL在優(yōu)化過(guò)程中分解語(yǔ)句,執(zhí)行時(shí)甚至不用訪問(wèn)表或索引,例如從一個(gè)索引列里選取最小值可以通過(guò)單獨(dú)索引查找完成。
  • index: Full Index Scan,index與ALL區(qū)別為index類型只遍歷索引樹
  • System:system是const類型的特例,當(dāng)查詢的表只有一行的情況下,使用system

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論