線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2349
推到 Plurk!
推到 Facebook!

請問读取SQL數據庫中JPG圖片速度的問題。

尚未結案
guyuelang
一般會員


發表:6
回覆:13
積分:3
註冊:2008-12-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-20 11:57:04 IP:222.242.xxx.xxx 訂閱
請教:
我在SQL中存放了JPG圖片大概4百多張 大概300K一張 開始存入200多個數據是時候沒有點問題
但現在存入400多個數據后就出現個問題 開讀圖的FROM的時候很慢 出現未響應 好像死機了
等了大概快十秒才好 但開了一次后就好 再開就很快了 就是第一次開的時候很慢
請教各位大大 我該怎么把數據庫優化下呢?? 先謝了。
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-20 15:21:24 IP:115.83.xxx.xxx 訂閱
圖片另外獨立一個table,不要跟資料混在一起
圖片不要全部讀取,顯示到哪一筆資料在去讀取相對應的圖片
guyuelang
一般會員


發表:6
回覆:13
積分:3
註冊:2008-12-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-20 15:33:45 IP:222.242.xxx.xxx 訂閱
我是這么做的 我重新做了表 只有編號和圖片
再在程序里讀什麽編號的時候才讀響應的圖片的
沒想到還是慢下來了 就第一次慢
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-21 00:01:56 IP:115.83.xxx.xxx 訂閱
1. INDEX應該有設吧 
2. 查詢時間太久導致小白窗出現,就要考慮使用多執行緒嚕
zz005
一般會員


發表:1
回覆:5
積分:1
註冊:2009-03-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-21 13:55:04 IP:219.131.xxx.xxx 訂閱
学习下
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-05-06 13:59:11 IP:219.87.xxx.xxx 訂閱
您好

請問一下資料庫連結的方式是使用ADO或是 BDE呢?
------
Pillar Wang
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-05-07 00:19:03 IP:219.84.xxx.xxx 訂閱
不知道你取圖的方法為何?

是把整個 Table 撈到 Client 後,才根據圖檔 ID 來取得圖片資料。

還是在 Select 時,就用 Where 條件去過濾,只取一個圖檔的 Record回來。

如果整個Table 撈到Client 後,才去取圖片資料,這十幾秒就變合理的,4百多張300K的圖,從SQL 傳到Cleint 只花十幾秒不錯了。

建議你可以試著把圖檔呈現的程式碼先 mark 起來不執行,看看光 SELECT 花的時間會花多久。

其實這個問題,不是用 Debug Mode ,來看一下十幾秒是卡在那一段程式碼,就很容易可以查到問題點嗎?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-05-08 22:46:05 IP:61.67.xxx.xxx 未訂閱
你的讀取圖片是讀入一筆嗎? 還是圖片檔一直都是開啟, 再用locate方式, 沒看到你的code, 不知道你的料與圖片響應的關係是如何?
===================引 用 guyuelang 文 章===================
我是這么做的 我重新做了表 只有編號和圖片
再在程序里讀什麽編號的時候才讀響應的圖片的
沒想到還是慢下來了 就第一次慢
guyuelang
一般會員


發表:6
回覆:13
積分:3
註冊:2008-12-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-06-10 11:17:25 IP:222.242.xxx.xxx 訂閱

我是用ADO連接的 在 Select 時,就用 Where 條件去過濾,只取一個圖檔的 Record回來。

並且和資料庫是分開的 是單獨一個相片庫

我是單獨讀取一筆資料的 就是在讀取第一筆資料的時候很慢 讀第二筆就很快了

我的數據是從SQL2000建立的 現在放到2005里了 碎片好像比較大

現在重裝系統后好了很多

close;
sql.Clear;
sql.Add('select * from 员工相片表 where 员工编号=:a');
parameters.ParamByName('a').Value:=trim(edit2.Text);
open;
jpeg:=TJpegImage.Create;
jpeg1:=TJpegImage.Create;
Image1.Picture.Assign(datam1.ADOchaxun.FieldByName('身份证相片'));
image2.Picture.Assign(datam1.ADOchaxun.FieldByName('证件照'));

我是這麼寫的 應該沒錯吧

謝謝各位熱心的回覆~~
系統時間:2024-04-24 18:11:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!