社区
数据库相关
帖子详情
请教用Delphi处理SQL数据库的效率问题!
bruce_zhao
2000-07-07 09:35:00
各位大侠:
我在做一个程序时,后台用的是SQL数据库,记录数有4万多条,我发现程序的效率很低,如果是修改了一条记录后保存,每次都会等待很久,如果有两人以上同时修改记录时(不是同一条记录),很容易出现死机,请问我该如何解决这个问题?如果用缓存的话,我怎么保证一个用户修改了记录后,另一个用户能够知道此条记录已修改?
还请各位大侠多多指点!小弟先行谢过!
...全文
622
29
打赏
收藏
请教用Delphi处理SQL数据库的效率问题!
各位大侠: 我在做一个程序时,后台用的是SQL数据库,记录数有4万多条,我发现程序的效率很低,如果是修改了一条记录后保存,每次都会等待很久,如果有两人以上同时修改记录时(不是同一条记录),很容易出现死机,请问我该如何解决这个问题?如果用缓存的话,我怎么保证一个用户修改了记录后,另一个用户能够知道此条记录已修改? 还请各位大侠多多指点!小弟先行谢过!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bruce_zhao
2000-07-17
打赏
举报
回复
To Ary:UpdateText只能存储4K吗?
码狂
2000-07-17
打赏
举报
回复
真是不懂你的意思.
UpdateText、ReadText、WriteText是用于处理Text字段的T-SQL函数只能有于存储过程中呀,当然还要用到TextPRT.每次只能存储4K。
Delphi中用TBlobStream来操作BLOB字段,例如将一个WAV文件存入数据库中,或者存入一个Word文件。它是通过直接调用SQL的DB-LIB来实现的,可以存储2G的数据。
这些与数据库效率有关吗?
yinyu
2000-07-17
打赏
举报
回复
hblinux说的第4条很关键,用SQL而不要用DELPHI带的数据库操作语句
虽然这要多写一点代码但效率和资源占用优于后者
华南虎哥
2000-07-17
打赏
举报
回复
当SQL庞大时程序解决方案事项列表:
1、创建表时合理使用index
2、使用database关联
3、不使用ODBC
4、使用Query而尽量少用table
5、你的聪明才智+优化代码
qiuzhi
2000-07-17
打赏
举报
回复
To bruce_zhao:
你说的返回几千条记录,然后让用户检查正确性并修改后刷新,这样的确效率不高!
请问:你有没有可能根据某种条件,每次返回几条数据(比如通过ID什么)。
在页面中增加一个类似“下一页”的功能,这样每次就取一页的数据,可能效率会高些!
关注其他人的高见!
halfdream
2000-07-17
打赏
举报
回复
同意W102272.
同时,可以使用一个timestamp 字段作为Update的判断字段,以保证并发操作的正确性。
bruce_zhao
2000-07-16
打赏
举报
回复
To Ary:我的表中有主键。
由于我是修改别人的程序,要完全改动很麻烦,所以我只是想局部修改一下。
我看帮助上说:如果更新大量的文本可以用 Sql 的 UpdateText语句,但是具体的我不知怎么写,还请各位告知,我一样给分!
先谢了!
牛魔王的表弟
2000-07-16
打赏
举报
回复
为什么不试一下delphi5的ado控件
w102272
2000-07-16
打赏
举报
回复
只要你的数据库锁的级别不是Dirty Read,就不会出现别的人看不到已修改的部分的情况。加个确认标记在数据表上,用tquery限制一下,就算几个人检查,也可以分片检查,不会一次看4万记录呀!
蝈蝈俊
2000-07-16
打赏
举报
回复
看看:李维的书,里面谈到了一些关于提高数据库效率的问题
码狂
2000-07-16
打赏
举报
回复
qsb,表中有主键吗?我们能很好的处理七十多万行的数据!
guoyuzhang
2000-07-15
打赏
举报
回复
建议用分布式结构,因为采用分布式结构可以使用多种数据优化方法,如DataBase Pooling,Object Pooling等,并且如果如果有两个用户同时修改纪录,程序员可以提供较好的错误处理技术。
bruce_zhao
2000-07-15
打赏
举报
回复
又:有朋友说几个人用时容易死机是因为数据库加锁的缘故,说是在UPdate时加入一个参数不加锁数据库,这样别人也可以同时修改数据库,这种说法对不对?如何实现?
bruce_zhao
2000-07-15
打赏
举报
回复
实际上我的需要是这样的:有几个人来检查那四万多条记录的准确性,所以我是用DBGrid来显示所有的记录,让他们逐一检查,这样我只有返回全剖的记录。而在更新的时候如果采用缓存技术的话,又怕别的人看不到已修改的部分。各位大侠说我该怎么办?
to nickw:实际上我们的每个用户都是长时间连在服务器上的。
nickw
2000-07-15
打赏
举报
回复
建议使用DELPHI的分布多层应用结构。建立应用服务器,并在该层使用DELPHI的DATABASE POOLING技术来优化程序。DATABASE POOLING 实际上就是数据库连接的重用技术,(即:当第一个用户连接数据库时数据库引擎要为该连接分派许多系统资源,当用户操作执行完毕后数据库引擎并不释放这些资源。而是等到另一个客户端连接同一个数据库时重用以前分配的资源,从而缩短连接时间;同时由于降低了服务器的负荷进而加快了数据库的响应速度。) 非常适用于大量用户访问而连接时间又很短情况。从你描述的情况来看,非常适合使用这项技术。
IAmKylix
2000-07-15
打赏
举报
回复
Use 'SQL Statement','TransIsolation','Prepare','Stoc'
Don not use Table.
HaoGe
2000-07-10
打赏
举报
回复
实在不行就先删除,再insert好了。
update好象是速度很慢.
bruce_zhao
2000-07-10
打赏
举报
回复
我修改的字段不是索引,所以速度慢和索引应该无关。
To ameng007、qiuzhi:我用的是SQL Server,据说它如果返回5000条记录以上,就会出问题,不知是否如此?
JACKY_LEE
2000-07-10
打赏
举报
回复
1.速度慢和缓冲关系不大。你肯定是一次把所有数据都提取到本地(有可能是用TTable
或SQL写的不好造成)。你想想,造成应用程序效率低主要在于和数据库服务其交换数据。
缓冲大小只能解决本地处理速度。你可以试着将每次需要的数据取过来(不要告诉我你需要四万多条,那你程序就需要深层优化了)。同时注意减少和数据库打交道的次数。将需要的数据一次取出、一次处理、一次提交。
2.至于缓冲的刷新不一致,你可以通过DataBase的TransIsolation属性来控制。具体细节你可以参考资料。
corao
2000-07-09
打赏
举报
回复
关注
同时同意fyje的.
加载更多回复(9)
怎么样在
delphi
中向
sql
数据库
添加图像和声音
小弟是一个菜鸟
请教
各位高手!请问 怎么样在
delphi
中向
sql
数据库
添加图像和声音! 100分
由
Delphi
程序改写
Sql
(2000)的存储过程
各位前辈大家好,请帮我解决一个棘手的
问题
,我不会写
SQL
存储过程,现在一个
Delphi
程序执行非常的慢,想将其用
SQL
存储过程替代请各位前辈帮忙,在线等主要 资料表单有 MRPplan,MRPplantou (生产单资料表), ...
各位大师
请教
一
数据库
问题
:
delphi
+
sql
insert into openrowset(++MICROSOFT.JET.OLEDB.4.0++,++dBase 5.0;DATABASE=c:/tmp++,++select * from [temp.dbf] ) select * from usertable 当使用本地
数据库
时该代码可行,但当使用网络
数据库
时则提示:路径:c:
delphi
中更新表字段update BLOB型数据(image)/获取图片转成BLOB型存入
数据库
我用的是ODAC 链接oracle
数据库
,
delphi
中update BLOB型数据
问题
困扰了我很久,我发现我直接 v_
sql
:='update xx_image set image:=in_image where xx1='+xx1; with dm_db.OraQuery1 do begin
取
数据库
中的日期,
请教
大家一条
SQL
语句
取
数据库
中的日期,
请教
大家一条
SQL
语句
Delphi
/ Windows SDK/APIhttp://www.
delphi
2007.net/
Delphi
DB/html/
delphi
_20061219100404229.html 在
数据库
中有一表名为abc,其中有一个字段属性为日期时间型,我写一条语句能够查出今天的记录 也就是说 select * from abc ...
数据库相关
2,498
社区成员
88,446
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章