C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 155 を表示中)
■89895 / )  SQLでのデータ取得方法について
□投稿者/ ルパン (12回)-(2019/01/15(Tue) 16:57:07)

分類:[.NET 全般] 

以下のような感じでデータがある場合に

PNAME CNAME
A B A
A E ├B
B E │└E
C F │ ├G
E G │ └H
E H └E
 ├G
   └H

以下の方法でデータをとってきています。

DECLARE @PNAME VARCHAR(20) = 'A';

WITH CTE (
PNAME, CNAME
)
AS (
SELECT PNAME, CNAME
FROM M_TREE
WHERE PNAME = @PNAME
UNION ALL
SELECT T2.PNAME, T2.CNAME
FROM M_TREE AS T2
INNER JOIN CTE
ON CTE.CNAME = T2.PNAME
)
SELECT DISTINCT *
FROM CTE

現在このデータが数万行あり
DISTINCT が遅いのでEXISTS を使うなど
別の方法で高速にとってこれますか?

また、とってきたデータが以下の順番でとってこれますか?
PNAME CNAME A
A B ├B
B E │└E
E G │ ├G
E H │ ├H
A E └E
E G  ├G
E H  └H



返信 編集キー/


管理者用

- Child Tree -