w60711 发表于 2019-10-4 14:35:35

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提取的方式...

heavenm 发表于 2019-10-4 15:49:02

是数据库读取占用时间,还是建treeview

w60711 发表于 2019-10-7 18:53:37

heavenm 发表于 2019-10-4 15:49
是数据库读取占用时间,还是建treeview

这真是一语点醒梦中人
有些语句加的位置不对导致缓慢
读取db约2秒 建立列表约2-4秒
已大幅缩减所需时间了
如果可以展开列表时再载入或许更好(?

kk_lee69 发表于 2019-10-9 10:13:56

本帖最后由 kk_lee69 于 2019-10-9 10:23 编辑

我有看到Afan大的 逐级载入,

上面不是好了 那你只要 仿照 字串的格式 就好啊

DB 抓出資料轉好 字串格式 就直接套用 不就好了

f4李文杨 发表于 2019-10-19 14:57:46

个人感觉,DB读取有点小BUG,之前写过一个仓库工具!后来改成mysql 这个效率高很多!!
页: [1]
查看完整版本: sqlite 數據 加到 treeview 效率問題