日期:2014-05-18  浏览次数:20479 次

图片数据库已经6g了, 添加新图时总是出现查询超时的情况, 有办法解决么?高分求教
图到不多有几万张图,每张最大200k。每次添加图片时需要从临时图片数据库   转移到主数据库   每次最多3张,这个过程总是出现查询超时的情况,请问有什么办法解决么?小弟先谢谢各位前辈了

源代码如下:
sql   =   "select   *   from   TempImageTable   where   user_id= "   &   user_id
set   rootRs   =   conn.execute(sql)
do   while   not   rootRs.Bof   and   not   rootRs.Eof

set   nextRs   =   Server.CreateObject( "ADODB.recordSet ")
sql   =   "SELECT   *   FROM   ImageTable "
nextRs.open   sql,conn   ,1,3
nextRs.AddNew
nextRs( "file_type ")   =   rootRs( "file_type ")
nextRs( "file_size ")   =   rootRs( "file_size ")
nextRs( "file_content ").AppendChunk   rootRs( "file_content ").GetChunk(clng(rootRs( "file_size ")))
nextRs( "link_id ")   =   article_id
nextRs( "create_time ")   =   this_time
nextRs.Update

rootRs.MoveNext
loop
conn.execute   "delete   from   TempImageTable   where   user_id= "   &   user_id




------解决方案--------------------
把图片保存在你的硬盘上,在数据库里就保存图片的地址,不就可以了?
------解决方案--------------------
这样试试
set nextRs = Server.CreateObject( "ADODB.recordSet ")
sql = "SELECT * FROM ImageTable "
nextRs.open sql,conn ,1,3

sql = "select * from TempImageTable where user_id= " & user_id
set rootRs = conn.execute(sql)
do while not rootRs.Bof and not rootRs.Eof
nextRs.AddNew
nextRs( "file_type ") = rootRs( "file_type ")
nextRs( "file_size ") = rootRs( "file_size ")
nextRs( "file_content ").AppendChunk
rootRs( "file_content ").GetChunk(clng(rootRs( "file_size ")))
nextRs( "link_id ") = article_id
nextRs( "create_time ") = this_time
nextRs.Update

rootRs.MoveNext
loop
conn.execute "delete from TempImageTable where user_id= " & user_id
------解决方案--------------------
select * into ImageTable from TempImageTable where user_id= " & user_id

我的看法:

user_id上有索引吗?

还有set nextRs = Server.CreateObject( "ADODB.recordSet ")这句是不是可以放在while外面?当然如果用了select into就没必要再开这个循环了。

另外看一下服务器的性能,是不是CPU利用率过高了?太高的话可能会导致响应慢而超时。


------解决方案--------------------
你的sql是常量,却在循环中打开数据库,不超时才怪。
------解决方案--------------------
sql = "SELECT * FROM ImageTable "
改成
sql = "SELECT * FROM ImageTable where 1=0 "
------解决方案--------------------
试试sql中的UPDATETEXT函数
------解决方案--------------------
将图片写进数据库,是一条死路.把图片重新整理出来,保存路径吧
------解决方案--------------------
大哥,你每次都打开整个数据库,你的程序不死谁死?

你试试
set nextRs = Server.CreateObject( "ADODB.recordSet ")
sql = "SELECT * FROM ImageTable where 1=0 "
nextRs.open sql,conn ,1,3

sql = "select * from TempImageTable where user_id= " & user_id
set rootRs = conn.execute(sql)