上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
amd
註冊時間: 2003-07-20 文章: 54
第 1 樓
|
發表於: 星期日 七月 13, 2014 11:59 pm 文章主題: 有沒有 像 vs 一樣的 dataset 模式的虛擬 資料表 |
|
|
因平常都用在 真實 資料 庫,但要 select 配 的條件很多,所以想說在記憶体 建立
一個 虛擬 資料表,查詢的速度應該會加快不少∼
這個 表 在 要的時候需要 可以 讀寫 的,之後可以不用存資料 ∼
謝 謝 各位大大∼ |
|
回頂端 |
|
|
foxy
註冊時間: 2007-08-16 文章: 232 來自: 泰國
第 2 樓
|
發表於: 星期一 七月 14, 2014 12:07 am 文章主題: |
|
|
在系統開始可以先做出這個 Table:
m.lcTableName='TMP'+SYS(2015)
SELECT * INTO TABLE (m.lcTableName)
INDEX ON *
_SCREEN.ADDPROPERTY('TMP_NAME1', m.lcTableName)
使用的時候:
USE (_SCREEN.TMP_NAME1)
SEEK
系統退出要刪除:
DELETE FILE (_SCREEN.TMP_NAME1+'.DBF')
DELETE FILE (_SCREEN.TMP_NAME1+'.CDX') _________________ 進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 3 樓
|
發表於: 星期一 七月 14, 2014 9:02 am 文章主題: |
|
|
如果用 dbf 的話, 在區域網路內
再如何虛擬, 也快不起來
不如加大記憶體, 建立 Ramdisk ,
把一些運算丢到 Ramdisk 去,還比較實益 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期一 七月 14, 2014 9:06 am 文章主題: |
|
|
不就是 CREATE CURSOR ....... 或是 SELECRT .... INTO CURSOR _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 5 樓
|
發表於: 星期一 七月 14, 2014 9:24 am 文章主題: |
|
|
CREATE CURSOR ....... 或 SELECRT .... INTO CURSOR
只是方便操作而已, 實際上並沒有減低網路傳輸流量
快也快不了多少
設若在主機上的 dbf 有一百萬筆 record
SELECRT .... where .... INTO CURSOR 後僅有一千筆
但,vfp仍然是把一百萬筆傳到前端再過濾成一千筆
整個網路傳輸並沒有減量 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 6 樓
|
發表於: 星期一 七月 14, 2014 9:25 am 文章主題: |
|
|
CREATE CURSOR ....... 或 SELECRT .... INTO CURSOR
只是方便操作而已, 實際上並沒有減低網路傳輸流量
快也快不了多少
設若在主機上的 dbf 有一百萬筆 record
SELECRT .... where .... INTO CURSOR 後僅有一千筆
但,vfp仍然是把一百萬筆傳到前端再過濾成一千筆
整個網路傳輸並沒有減量 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 7 樓
|
發表於: 星期一 七月 14, 2014 10:16 am 文章主題: |
|
|
只看網路傳輸確實是這樣.
但如果還有後續多次處理的情況,
那做成cursor 就是如樓主一開始所問. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
marvin
註冊時間: 2004-06-01 文章: 321
第 8 樓
|
發表於: 星期一 七月 14, 2014 11:16 am 文章主題: |
|
|
cursor 不是會寄存在自已PC上嗎?
如果不是, 加上 readwrite 應該一定可以 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 9 樓
|
發表於: 星期一 七月 14, 2014 11:30 am 文章主題: |
|
|
以目前的電腦速度及硬碟速度來說
into cursor 和 into table 其實差異已經不大
最大的瓶頸還是在網路傳輸
而這一點, dbf 實在無解 |
|
回頂端 |
|
|
amd
註冊時間: 2003-07-20 文章: 54
第 10 樓
|
發表於: 星期一 七月 14, 2014 11:48 am 文章主題: |
|
|
各位大大,可能小弟沒講得很清楚∼
我在本機上作業∼
我的 資料 結構是 共 3 個表
A 2000 筆 共 10 個欄位,最後不用真的存資料
B 目前有 20 萬筆(每天會 2000 筆增加
C 目前有 20 萬筆(每天會 2000 筆增加
再來就是 3個表交叉 select 要的結果,比對的條件很多,
我目前在真的 dbf 上大概要 3秒查出吧,想說要快一點!
因為 A 表要一直重覆寫 8 小時,如果在一個 ram 上的 假資料表(沒有實体),但可以寫 讀,這樣速度都會增加很多∼
----------------
TO ckp6250 大大
Ramdisk 這個我有用過,沒什麼效果
syntech 大大
CREATE CURSOR ....... 這個是沒有實体的 dbf 嗎?
或是 SELECRT .... INTO CURSOR 這個不是不可 寫 嗎?
-------------
謝謝各位∼
麻煩各位大大 再 教授一下 ∼ |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 11 樓
|
發表於: 星期一 七月 14, 2014 11:54 am 文章主題: |
|
|
1.CREATE CURSOR ....... 這個是沒有實体的 dbf 嗎?
記憶體夠的情況下,無實體,不太夠的話,由vfp自動管理,並產生臨時檔,使用完自動刪除
2.或是 SELECRT .... INTO CURSOR 這個不是不可 寫 嗎?
vfp 7 以上 加入 readwrite,
vfp 6 以下 要動點手腳.版上有.
3. ramdisk 沒效果的話,通常其他方式也不會有效果.
只能靠把這個工作轉成讓DB Server (例如 oracle sql server,m$ sql server, mysql server) 去處理.
運氣好,可以改善. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
violetlkk
註冊時間: 2003-06-21 文章: 82 來自: kaohsiung
第 12 樓
|
發表於: 星期一 七月 14, 2014 12:05 pm 文章主題: |
|
|
我想 ,買貴一點的電腦+固態硬碟 ,可能會縮成1秒 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 13 樓
|
發表於: 星期一 七月 14, 2014 3:33 pm 文章主題: |
|
|
amd 寫到: |
我目前在真的 dbf 上大概要 3秒查出吧,想說要快一點!
|
若是我的話,就不會費心在這兒啦
就算3秒縮成一秒,客戶也不會有感覺!
等那一天到了要跑30秒時,再來操心這個主題吧
amd 寫到: |
再來就是 3個表交叉 select 要的結果,比對的條件很多,
|
又,一道複雜的 Select 語句,有時,把它拆成二三段簡單的語句,
可能整體時間會更節省 |
|
回頂端 |
|
|
amd
註冊時間: 2003-07-20 文章: 54
第 14 樓
|
發表於: 星期一 七月 14, 2014 5:54 pm 文章主題: |
|
|
首先 先 謝謝 各位大大 分享自己 的技巧∼
syntech 大大提供的 2個 技巧,記起來,應該有用∼
TO ckp6250 大大,小弟是在找看能不能有更快的技巧∼
-------
程式是自己用的,目的是看金融 方面.....,所以速度要愈快愈好∼
我是寫分2個程式,一個下載我要的資料,所以它要一直重覆做讀寫,一個是在 select 我要的資料‵
本來想用 syntech 大大提供的 CREATE CURSOR 方式,突然想到我是分2個程式,所以此法不行,還是要實体∼
那個 ckp6250 大大 提供的 select 拆成二三段簡單的語句,我是已把 本來要查 3個表,分成2階段了,不然真的會慢到爆∼
可能最後的做法是 先把 a b c 表給先 select 在記憶体,再來 select 要的條件 來試看看 會不會較快∼
本來想學 c# 來寫看看,但想到我寫的程式,是要在3個表 跑來跑去,心就涼了一半,還是用 foxpro 來寫較實在∼
如果都沒效果,可能以後再買一個 ssd 來用∼
--------
話說 foxpro 如果要寫成 sql 資料庫 方式,小弟沒研究過,不會寫,有需要的時候再學看看,不過感覺如要 sql 資料庫 ,用 c# 會不會較簡單 ∼ |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 15 樓
|
發表於: 星期一 七月 14, 2014 8:50 pm 文章主題: |
|
|
amd 寫到: |
我在本機上作業∼
我的 資料 結構是 共 3 個表
A 2000 筆 共 10 個欄位,最後不用真的存資料
B 目前有 20 萬筆(每天會 2000 筆增加
C 目前有 20 萬筆(每天會 2000 筆增加
|
以這個條件來看,3秒肯定有改進空間,應是程式問題
40萬筆的dbf, 以vfp來講,是小兒科
至於提到資料處理,就不用提 c# 了,
包準被 vfp 巴玩的
又,只要不斷電或當機
CREATE CURSOR 就等於實體了,跟您拆幾支程式無關
ckp6250 在 星期一 七月 14, 2014 9:28 pm 作了第 3 次修改 |
|
回頂端 |
|
|
|