佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2061|回复: 26

SQL Load Database 的速度 

[复制链接]
发表于 21-11-2006 02:31 PM | 显示全部楼层 |阅读模式
前辈大家好,我想请问大家有没有办法然SQL Load Database 时快一些?我是用VB.net Express 2005 + MSSQL 2000, 谢谢大家!!!

[ 本帖最后由 Ryan1984 于 21-11-2006 02:35 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 21-11-2006 02:55 PM | 显示全部楼层
原帖由 Ryan1984 于 21-11-2006 02:31 PM 发表
前辈大家好,我想请问大家有没有办法然SQL Load Database 时快一些?我是用VB.net Express 2005 + MSSQL 2000, 谢谢大家!!!


你的query,indexing,database design等都很重要的
回复

使用道具 举报

 楼主| 发表于 21-11-2006 03:27 PM | 显示全部楼层
其实只是extract data 出来罢了,由于data过多搞到system很慢,我的query 只是 SELECT Item_No FROM Item_Master ORDER BY Item_No
回复

使用道具 举报

发表于 21-11-2006 04:16 PM | 显示全部楼层
原帖由 Ryan1984 于 21-11-2006 03:27 PM 发表
其实只是extract data 出来罢了,由于data过多搞到system很慢,我的query 只是 SELECT Item_No FROM Item_Master ORDER BY Item_No


是多少?如果你全部load出来的话一定很慢。。
回复

使用道具 举报

 楼主| 发表于 21-11-2006 04:23 PM | 显示全部楼层
这是testing Database,我已经减少data 了,但还是有4千多个,如果是real Database,我想恐怕有上万个data....
回复

使用道具 举报

发表于 21-11-2006 11:10 PM | 显示全部楼层
原帖由 Ryan1984 于 21-11-2006 04:23 PM 发表
这是testing Database,我已经减少data 了,但还是有4千多个,如果是real Database,我想恐怕有上万个data....


1。你用什么语言?
2。你怎么显示你的资料?
回复

使用道具 举报

Follow Us
发表于 22-11-2006 07:49 AM | 显示全部楼层
我retrieve整十万多个也不过用了11-20秒。而且还是view retrive from view的那种。。。
如果只是一个简单的,十多万个都会在10秒以内出现。。。
你4千多个用了多久时间retrieve啊?
回复

使用道具 举报

 楼主| 发表于 22-11-2006 08:30 AM | 显示全部楼层
大概要4-5秒,我是用vb.net express 2005,用ADODB的方法,用Do While - loop 来call data.

[ 本帖最后由 Ryan1984 于 22-11-2006 08:38 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 22-11-2006 09:11 AM | 显示全部楼层
原帖由 Ryan1984 于 22-11-2006 08:30 AM 发表
大概要4-5秒,我是用vb.net express 2005,用ADODB的方法,用Do While - loop 来call data.


也许把你的 code 放上来看看... 让大家分析看看是什么原因.
回复

使用道具 举报

 楼主| 发表于 22-11-2006 10:59 AM | 显示全部楼层
原帖由 goatstudio 于 22-11-2006 09:11 AM 发表


也许把你的 code 放上来看看... 让大家分析看看是什么原因.

        rs_item.Open("SELECT Item_No FROM Item_Master ORDER BY Item_No", cnsql, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
        rs_cust.Open("SELECT customer_no FROM Customer_Master ORDER BY customer_no", cnsql, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
        Itemcb.Items.Clear()
        Custcb.Items.Clear()
        Do While Not rs_item.EOF
            Itemcb.Items.Add(Trim(rs_item.Fields("Item_no").Value))
            rs_item.MoveNext()
        Loop
        Itemcb.ResetText()
        Do While Not rs_cust.EOF
            Custcb.Items.Add(Trim(rs_cust.Fields("customer_no").Value))
            rs_cust.MoveNext()
        Loop
回复

使用道具 举报

 楼主| 发表于 22-11-2006 02:05 PM | 显示全部楼层
没办法吗?
回复

使用道具 举报

发表于 22-11-2006 11:27 PM | 显示全部楼层
原帖由 Ryan1984 于 22-11-2006 10:59 AM 发表

        rs_item.Open("SELECT Item_No FROM Item_Master ORDER BY Item_No", cnsql, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
        rs_cust.Open("SELE ...


你只是要显示资料? 尝试用 datagrid 来做 paging 吧.
回复

使用道具 举报

 楼主| 发表于 23-11-2006 08:57 AM | 显示全部楼层
不是,我要extract data from database 让用户能在combobox 内选资料,所以不能用datagrid.
回复

使用道具 举报

发表于 23-11-2006 09:14 AM | 显示全部楼层
原帖由 Ryan1984 于 23-11-2006 08:57 AM 发表
不是,我要extract data from database 让用户能在combobox 内选资料,所以不能用datagrid.


你load几千个data 在combobox里一定会慢的啊。。尽量做几个filtering的东西,或放textbox给用户输入加上有incremental search的功能..

如果要给用户在几千个record的combobox里选,是我的话,我会一拳把monitor槌过去哈哈。。你可以参考
http://tw.dictionary.yahoo.com/

他的textbox可以做incremental search的
回复

使用道具 举报

 楼主| 发表于 23-11-2006 10:06 AM | 显示全部楼层
原帖由 max5007 于 23-11-2006 09:14 AM 发表


你load几千个data 在combobox里一定会慢的啊。。尽量做几个filtering的东西,或放textbox给用户输入加上有incremental search的功能..

如果要给用户在几千个record的combobox里选,是我的话,我会一拳把mo ...

我也不想的呀,老板说的就是要这样,但您给了我一些启发,嘿嘿,谢咯?
回复

使用道具 举报

发表于 23-11-2006 01:57 PM | 显示全部楼层
原帖由 Ryan1984 于 23-11-2006 08:57 AM 发表
不是,我要extract data from database 让用户能在combobox 内选资料,所以不能用datagrid.


试想想... 你是一个 user, 你需要从combo box 里从四千多个资料选出来... 实际情况可能是上万个... 你会不会欲哭无泪...
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 23-11-2006 04:31 PM | 显示全部楼层
这我明白,但我必须限制user只能选existing的data. 个位有更好的办法吗?
回复

使用道具 举报

发表于 23-11-2006 04:59 PM | 显示全部楼层
原帖由 Ryan1984 于 23-11-2006 04:31 PM 发表
这我明白,但我必须限制user只能选existing的data. 个位有更好的办法吗?

用那yahoo的方法就可以轻松解决了
回复

使用道具 举报

 楼主| 发表于 23-11-2006 05:02 PM | 显示全部楼层
原帖由 max5007 于 23-11-2006 04:59 PM 发表

用那yahoo的方法就可以轻松解决了

http://tw.dictionary.yahoo.com/
您是指这个?恕我无知,这是字典吧?
回复

使用道具 举报

发表于 23-11-2006 05:10 PM | 显示全部楼层
原帖由 Ryan1984 于 23-11-2006 05:02 PM 发表

http://tw.dictionary.yahoo.com/
您是指这个?恕我无知,这是字典吧?

是啊。。你在"輸入單字(中英文皆可) "旁边的textbox 输入任何的字母
如你输入 "s",他就会在textbox下面出现很多s开头的字...你可以用这方法啊。。你以为我叫你查字典啊?haha..

我是给你参考yahoo incremental search的做法^^
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-9-2024 09:27 AM , Processed in 0.138176 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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