請問分開查詢或試一次查詢完?

提供WOG各方面的技術問題,並提供最新path更新。

版主: 涅魂, 簫哥, 10度C~

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

請問分開查詢或試一次查詢完?

文章stu6707 » 2011-01-02 4:23 pm

因為要新增寶箱物品,所以想到把可食用物品與wog_df分離
把d_g_smart,d_g_bag等等欄位從wog_df抽出來放在新的資料表,比較好整理

參考了v4的arm_item_use,可食用的數值都是在arm_setup就查詢完成了,然後再傳到arm_item_use做處理

我的構思是在arm_setup只查詢不可食物品的數值,在arm_item_use查詢該物品的type,然後switch type
type 0 只查詢增加經驗的數值、type 1 查詢增加能力的數值,然後做處理

這兩種方法有什麼差別嗎? 哪一種比較適合?

謝謝~




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問分開查詢或試一次查詢完?

文章涅魂 » 2011-01-20 1:24 am

對資料庫查詢來說,在一次的查詢內要取出一個欄位的值與要取出多個欄位的值的成本差異是不大的

從這個角度來看,你所做的分開查詢的動作會顯得比較累贅

而從藕合度的角度來看,你的作法偏向於解耦合,程式碼會比先前的更容易理解、有擴充性

兩種作法有利有弊,要分優劣其實也差異不大


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問分開查詢或試一次查詢完?

文章stu6707 » 2011-01-30 9:40 am

原本是想把type 6的欄位從wog_df抽出來放在新資料表,不過工程浩大.... 囧 還是暫時放著吧 @@
裝上道具裝備都會查詢整個wog_df,覺得有點浪費資源 @@ 畢竟武器防具都不會用到d_g_xxx欄位




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問分開查詢或試一次查詢完?

文章涅魂 » 2011-02-06 6:12 pm

這就需要評估了,d_g_hp的欄位型態是mediumint,理論上是佔據3byte, 假設你的wog_df有5000筆資料,則總共佔據5000*3 = 15000 bytes = 15KB

接著來觀察d_name的佔據情形;d_name是長度=96的varchar in UTF-8,假定d_name的平均使用率是50%,所以5000筆資料佔據的空間就是48 * 5000 = 240000 bytes = 240KB

顯然地對d_name做最佳化能更容易就壓榨出更多資源,除非一次對多數的整數欄位做切割,不然空間利用的情形並不會影響許多

當然,如果空間浪費會讓你晝思夜夢的話就有必要解決囉 ~~


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問分開查詢或試一次查詢完?

文章stu6707 » 2011-02-07 9:25 am

看樣子是沒差的,裝備的d_g_xxx欄位都是0... 好像也差不了多少...
d_name阿.. 不知道要怎麼壓榨它來取得更多資源 @@




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問分開查詢或試一次查詢完?

文章涅魂 » 2011-02-07 11:10 am

像是精簡、限制道具名稱的長度都是辦法,使用較短長度的語系來儲存,使用時再作轉換也不是不行

如果機器的能力很強的話就能採用後面那種作法,但一般情況下還是以能直接取用為佳

應該也有其他作法,這就要看你的創意啦~


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問分開查詢或試一次查詢完?

文章stu6707 » 2011-02-07 2:33 pm

現在wog_df才快600筆資料,預計完成時會有1500筆吧,頂多100k
"應該"不會需要精簡的 XD




回到 Online FF Battle-WOG官方聯盟推廣處

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 3 位訪客