找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 284|回复: 4

[效率算法] sqlite 數據 加到 treeview 效率問題

[复制链接]
发表于 2019-10-4 14:35:35 | 显示全部楼层 |阅读模式
本帖最后由 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, 子分类1, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
  2. 2, 主分类1, 子分类2, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
  3. 3, 主分类2, 子分类1, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
  4. 4, 蔬菜, ˋ植根类, 辣根, Server1, 2进制图片, 2进制图片, 1+2+3
  5. .
  6. .
  7. .
复制代码
开启程序时,会依据分类(前3项)加到树状列表中,如下图:
其中,小明 小华 等等是写死的(根),会根据 1 2 3 去判断要写到哪个根目录


现在问题来了,光是读取到写入列表
就花了快1.2分钟...
请求大神帮忙改为效率方法,感谢~

以下为原代码

  1. Func _CreateListTree($Server) ;;建立树状列表分类
  2.         Local $hQuery, $hQuery2, $aArray, $bArray
  3.         If $Server = '小明' Then
  4.                 $server = 'T_MIN'
  5.                 $root = $tMIN ;;创建根 时候的名称
  6.         EndIf
  7.         If $Server = '小华' Then
  8.                 $server = 'T_HWU'
  9.                 $root = $tMIN
  10.         EndIf
  11.         If $Server = '小李' Then
  12.                 $server = 'T_LEE'
  13.                 $root = $tMIN
  14.         EndIf
  15.         _SQLite_Exec($sDB, "BEGIN;") ;;显性事务
  16.         Local $row, $col
  17.         _SQLite_GetTable2D(-1, "SELECT F_ClassiFication FROM T_Category;", $hQuery, $row, $col)
  18.         $aArray = _ArrayUnique($hQuery)
  19.         Local $Class[$aArray[0]-2]
  20.         For $k = 0 To $aArray[0] -3
  21.                 $Class[$k] = GUICtrlCreateTreeViewItem($aArray[$k+2],$root)
  22.                 _SQLite_GetTable2D(-1, "SELECT F_SubClass FROM T_Category Where F_ClassiFication='" & $aArray[$k+2] & "';", $hQuery2, $row, $col)
  23.                 $bArray = _ArrayUnique($hQuery2)
  24.                 Local $Sub[$bArray[0]-2]
  25.                 For $m = 0 To $bArray[0] -3
  26.                         $Sub[$m] = GUICtrlCreateTreeViewItem($bArray[$m+2],$Class[$k])
  27.                 Next
  28.         Next
  29.         _SQLite_Exec($sDB, "COMMIT;") ;;关闭显性事务
  30. EndFunc
复制代码



PS.
我有看到Afan大的 逐级载入
但是弄了半天还是无法改成从DB提取的方式...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
发表于 2019-10-4 15:49:02 | 显示全部楼层
是数据库读取占用时间,还是建treeview

评分

1

查看全部评分

 楼主| 发表于 2019-10-7 18:53:37 | 显示全部楼层
heavenm 发表于 2019-10-4 15:49
是数据库读取占用时间,还是建treeview

这真是一语点醒梦中人
有些语句加的位置不对导致缓慢
读取db约2秒 建立列表约2-4秒
已大幅缩减所需时间了
如果可以展开列表时再载入或许更好(?
发表于 2019-10-9 10:13:56 | 显示全部楼层
本帖最后由 kk_lee69 于 2019-10-9 10:23 编辑

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

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

DB 抓出資料  轉好 字串格式 就直接套用 不就好了
发表于 2019-10-19 14:57:46 | 显示全部楼层
个人感觉,DB读取有点小BUG,之前写过一个仓库工具!后来改成  mysql 这个效率高很多!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2019-11-15 03:00 , Processed in 0.062499 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表