sqlite 數據 加到 treeview 效率問題
本帖最后由 w60711 于 2019-10-4 14:40 编辑data.db:
表:T_Category
栏位:F_id, F_ClassiFication, F_SubClass, F_Sort, F_Server, F_IconImage, F_PicImage, F_Spares
数据:(大约有1万笔以上,数据库约500MB)
1, 主分类1, 子分类1, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
2, 主分类1, 子分类2, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
3, 主分类2, 子分类1, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
4, 蔬菜, ˋ植根类, 辣根, Server1, 2进制图片, 2进制图片, 1+2+3
.
.
.开启程序时,会依据分类(前3项)加到树状列表中,如下图:
其中,小明 小华 等等是写死的(根),会根据 1 2 3 去判断要写到哪个根目录
现在问题来了,光是读取到写入列表
就花了快1.2分钟...
请求大神帮忙改为效率方法,感谢~
以下为原代码
Func _CreateListTree($Server) ;;建立树状列表分类
Local $hQuery, $hQuery2, $aArray, $bArray
If $Server = '小明' Then
$server = 'T_MIN'
$root = $tMIN ;;创建根 时候的名称
EndIf
If $Server = '小华' Then
$server = 'T_HWU'
$root = $tMIN
EndIf
If $Server = '小李' Then
$server = 'T_LEE'
$root = $tMIN
EndIf
_SQLite_Exec($sDB, "BEGIN;") ;;显性事务
Local $row, $col
_SQLite_GetTable2D(-1, "SELECT F_ClassiFication FROM T_Category;", $hQuery, $row, $col)
$aArray = _ArrayUnique($hQuery)
Local $Class[$aArray-2]
For $k = 0 To $aArray -3
$Class[$k] = GUICtrlCreateTreeViewItem($aArray[$k+2],$root)
_SQLite_GetTable2D(-1, "SELECT F_SubClass FROM T_Category Where F_ClassiFication='" & $aArray[$k+2] & "';", $hQuery2, $row, $col)
$bArray = _ArrayUnique($hQuery2)
Local $Sub[$bArray-2]
For $m = 0 To $bArray -3
$Sub[$m] = GUICtrlCreateTreeViewItem($bArray[$m+2],$Class[$k])
Next
Next
_SQLite_Exec($sDB, "COMMIT;") ;;关闭显性事务
EndFunc
PS.
我有看到Afan大的 逐级载入,
但是弄了半天还是无法改成从DB提取的方式...
是数据库读取占用时间,还是建treeview heavenm 发表于 2019-10-4 15:49
是数据库读取占用时间,还是建treeview
这真是一语点醒梦中人
有些语句加的位置不对导致缓慢
读取db约2秒 建立列表约2-4秒
已大幅缩减所需时间了
如果可以展开列表时再载入或许更好(? 本帖最后由 kk_lee69 于 2019-10-9 10:23 编辑
我有看到Afan大的 逐级载入,
上面不是好了 那你只要 仿照 字串的格式 就好啊
DB 抓出資料轉好 字串格式 就直接套用 不就好了
个人感觉,DB读取有点小BUG,之前写过一个仓库工具!后来改成mysql 这个效率高很多!!
页:
[1]