temp table的问题 |
尚未結案
|
luowy651
高階會員 ![]() ![]() ![]() ![]() 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, temp table 在該 CONNECTION 結束時, 會自動釋放, 並不會有維護上的問題, 但是一般來說, 都還是建議在使用後不用時, 要將其釋放掉, 利用 DROP TABLE #XXX_TABLE 的方式處理.
在不支援 TEMP TABLE 的資料庫中, 可以利用新增實體資料表的方式來當作臨時表, 但問題會在於實體表的名稱會有重覆的危機, 必須要自己命名妥善, 以免造成錯誤. 而且一定要在不使用時刪去, 以免佔用在資料庫之中.
若是遇到計算大量且複雜時, 建議你使用 STORED PROCEDURE 來做處理, 而 TEMP TABLE 也由 STORED PROCEDURE 來維護, 一方面增進效能, 另一方面也避免資料直接由 CLIENT 與 SERVER 往來, 造成不必要的網路資源浪費. 當然, 重點仍在於計算大量且複雜, 用 SOTRED PROCEDURE 是比較理想的方法.
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 因公司內部大部分使用的 DataBase 為 Oracle,無法使用如 SQL Server 如此便利之 Temp Table,Stored Procedure 中要去動態指定 Temp Table 名稱,又有困難,因此衍生出另一種方法 1.產生一個 Function 來作回序號產生器,當程式呼叫時即回傳一個數字給程式(有點類似去銀行抽號碼牌),或由其它法取得唯一值以作為判斷
2.Temp Table 中保留一個欄位,用來儲存該序號,程式中僅對自己所屬序號之資料進行處理
3.程式結束時,將自己所屬序號之資料予以刪除
4.定時檢查該 Temp Table 並將該Table 予以 Truncate 掉(是Truncate 而不是 Drop),避免程式不正常中斷,所殘餘之資料流於其中
------
Fishman |
luowy651
高階會員 ![]() ![]() ![]() ![]() 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
timhuang大大:
您好!非常感谢,但还有一些我想问得再细一些,
“在不支援 TEMP TABLE 的資料庫中, 可以利用新增實體資料表的方式來當作臨時表,”,那如果在c/s结构中,有多个client操作,是否会冲突呢?
“若是遇到計算大量且複雜時, 建議你使用 STORED PROCEDURE 來做處理, 而 TEMP TABLE 也由 STORED PROCEDURE 來維護。”能说得再详细一些吗?怎样避免冲突?
小弟入行还短,谢谢各位大大!也非常感谢fishman大大给我的建议! 發表人 - luowy651 於 2004/01/19 09:00:40
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
luowy651
高階會員 ![]() ![]() ![]() ![]() 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: “在不支援 TEMP TABLE 的資料庫中, 可以利用新增實體資料表的方式來當作臨時表,”,那如果在c/s结构中,有多个client操作,是否会冲突呢? “若是遇到計算大量且複雜時, 建議你使用 STORED PROCEDURE 來做處理, 而 TEMP TABLE 也由 STORED PROCEDURE 來維護。”能说得再详细一些吗?怎样避免冲突?避免衝突的作法, 在 Fishman 兄的第一篇回文中已說明的相當詳細, 請再仔細閱讀!! 若是你對於操作 temp table 還有不明白的地方, 建議你將問題描述得更詳細一些, 如使用的資料庫為何? 用途? 要用 temp table 的原因? 或是要達到什麼樣的功能等, 這樣好讓大家幫你解答!! |
luowy651
高階會員 ![]() ![]() ![]() ![]() 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
Timhuang大大及其它大大:
您们好!
我主要是对c/s结构的database操作不太了解,我们公司购买了一套c/s购销软体,由于其是标准化软体,有些报表并不完全适合我们公司,但其数据库结构是开放的,因此我需要跟据我们公司的特点从此database中抓取data,设计一些符合公司个性化的table软体并在前台显示出来,还能导出成excel等格式,但在设计这些个性化的table时,并不是一步就可以出来的,需要先成为table1,再成为table2....,到最后才能形成我所想要的table,由于client很多,为避免冲突,我现在的做法是在每一个client机上建一个temp_client的database,把这些临时table1,table2...放在client上做,最后形成的table也放在各自的client上,但我觉得这方法肯定不是好方法,所以我很想知道那些商品化的c/s购销软体是怎么做的?我用的是sql server和delphi,同时我也想知道其它database是怎么做的?
不胜感激!
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: luowy651,你真是問對人了,timhuang 大大是這方面的專家,請參考它的文章
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43682
SQL Server 我不太熟,所以.....
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |