2011-02-11 4 views
0

내가 트리 계층 구조를 통과하는 가장 효율적인 방법을 찾고 있어요 .. 내가이나무 위쪽으로

를 가로 지르는/테이블이와 기록의 수백만 예상됩니다 트리가 변경되지 않습니다 ..

순간

은 정말 20 시드 ID가

/1/1// 1/

/20 ..

얼마나 효율적 CR 같은 트리 문자열을 기억하고 위쪽으로 위 어플 라니? 나는 현재 이것을 가지고있다

select * from reg where tree in ('/20/1/1/1/1','/20/1/1/1','/20/1/1','/20/1','20') 

나를 분할하고 반복하지 않아도되는 sql 명령이 있습니까?

나는 SQL 서버를 사용하고 CTE 명령을 알고 있지만, 기록의 수백만 ...있을 때 잘 수행하지 않습니다 오전 :/

감사

답변

1
당신의 비교를 역

가!

SELECT * FROM reg WHERE tree='/20/1/1/1/1' OR '/20/1/1/1/1' LIKE CONCAT(tree, "/%"); 


mysql> create table temp_reg (tree varchar(255)); 
Query OK, 0 rows affected (0.01 sec) 

mysql> insert into temp_reg values ('/20/1/1/1/1'),('/30/1/1/1'),('/20/1'); 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> select * from temp_reg where '/20/1/1/1/1' LIKE CONCAT(tree, "%"); 
+-------------+ 
| tree  | 
+-------------+ 
| /20/1/1/1/1 | 
| /20/1  | 
+-------------+ 
2 rows in set (0.00 sec) 
+0

멋진 행운을 빌어 요 .. 내가 SQL 서버에했지만, CONCAT 함수 – Alessandro

+0

아, 미안, 난 당신이 MySQL을 사용하지 않은 통지를하지 않았다 밤은. SQL Server는'+'를 사용한다고 생각합니까? 논리는 여기에 있습니다. 문법에 대해 잘 모르겠습니다. ( – Mikhail

+0

try '... LIKE tree +'% '' –