經典SQL語句 樹的優化

2021-04-06 21:30:31 字數 1466 閱讀 9787

oracle 語法

上次發的返回生成樹的:

select ob_parentcode_0047,ob_sortcode_0047,ob_sortname_0047 from ctb_text_0047 where ob_isvalid_0047 = '1'

connect by prior ob_sortcode_0047=ob_parentcode_0047 start with ob_parentcode_0047='01' order siblings by ob_sortcode_0047

只能在9i中用,在8i中只能用,ios用的是8i的資料庫:

select ob_parentcode_0047,ob_sortcode_0047,ob_sortname_0047 from ctb_text_0047 where ob_isvalid_0047 = '1'

connect by prior ob_sortcode_0047=ob_parentcode_0047 start with ob_parentcode_0047='01' order by ob_sortcode_0047

將 order siblings by  改為 order  by

返回生成好的樹

bcb中顯示樹的**:

///定義乙個結構儲存返回的記錄集。

/*struct sort;

*/treeview1->items->clear();

ttreenode *tnode1;

ttreenode *tnode2;

string s_pcode="";  //臨時儲存父類編碼

string s_code="";   //臨時儲存類別編碼

for(int i=0; i< arr_sort.size(); i++)

if(ansistring(arr_sort[i].psortcode)=="01")  //頂級節點父類編碼=01)

else if(s_pcode==string(arr_sort[i].psortcode))  //與上一條記錄是同級(父類**相同)

else if(s_code == string(arr_sort[i].psortcode))  //是上一條記錄的下級(上一條的類別**=本條的父類**)

else  //不是上一條記錄是同級/下級

while (strcmp(arr_sort[i].psortcode,(char*)(tnode1->data))); //找到本條的父類**=類目**的那一條記錄,作為那一條的子節點

tnode2=treeview1->items->addchildobject(tnode1,arr_sort[i].sortname,arr_sort[i].sortcode);

tnode1=tnode2;

}s_pcode=string(arr_sort[i].psortcode);

s_code=string(arr_sort[i].sortcode);

}

SQL語句優化之經典總結

不可不優化的where子句 1.例 下列sql條件語句中的列都建有恰當的索引,但執行速度卻非常慢 select from record where substring card no,1,4 5378 13秒 select from record where amount 30 1000 11秒 s...

常用SQL語句優化技巧總結 經典

除了建立索引之外,保持良好的sql語句編寫習慣將會降低sql效能問題發生。通過變數的方式來設定引數 好 stringsql select from people p where p.id 壞 stringsql select from people p where p.id id 資料庫的sql文解...

經典的SQL語句

說明 複製表 只複製結構,源表名 a 新錶名 b b不存在 sql select into b from a where 1 1 說明 拷貝表 拷貝資料,源表名 a 目標表名 b b存在 sql insert into b a,b,c select d,e,f from b sql select a...