Re: [請益] MySQL執行效率一問

看板PHP作者 (哇哇哇○( ̄﹏ ̄)○)時間19年前 (2005/10/14 18:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/7 (看更多)
※ 引述《KennyL (Giant Heart)》之銘言: : ※ 引述《wawawa (哇哇哇○( ̄﹏ ̄)○)》之銘言: : : 若是有適當正規化,應該一個步驟就可以把資料提取出來。 : : 當然,請記得相關欄位加上索引,速度才會快。以下是小弟的建議: : : 1.正規化,將作者那一欄抽出成一個獨立資料表 : 嗯嗯~誠如w大所說, 將資料取出並正規化的確是最好的方式. : 但目前系統的設計, 是可以讓使用者在一個資料表的結構下自行upload資料, : 再由系統去分析使用者在這一次上傳資料中的內容. : 也就是說, 我只是提供一個殼, 讓user自己放資料進來. : 所以獨立出來的資料表, 內容也還是會每次不同. : 所以我的迷思就在這了, 同樣都是要重新insert資料, 也同樣都有建立欄位索引, : 唯一的差別在於先建立資料表, 或是在程式裡執行新增資料表, : 這兩種方式在效能上會不會有很大的差別呢? 效能上的差別,會隨著你的資料量的增加而拉大。 所以若是你的資料量很大、使用者存取又很頻繁,那真的要設法改善這一部分的效能, 否則存取的速度、系統負載應該都會有著相當的影響。 既然你說你是提供一個殼讓使用者輸入資料, 比如你設計了一個頁面,讓使用者可以在這個頁面一次把所有的資料輸入(書籍名稱、 作者等),那還不如改成這樣: 第一個頁面指出現書籍名稱、ISBN號碼...等單一資料的欄位讓使用者輸入, 輸入完畢後使用者按下一步; 第二個頁面讓使用者下拉選擇有幾位作者,搭配javascript動態產生作者數量的 文字輸入欄位。如此一來第二個頁面的資料(作者),就可以使用php去解析,存到 獨立的作者資料表。如此一來不也是可以達成你的"提供使用者輸入的殼"的需求?:) 當然,若是架構以然定型,不宜去更動的話, 那就設法使用我前面所提的第二種方法,這裡配合你的需求修改如下: 1.在啟動MySQL時,新增一個HEAP型態的資料表: CREATE TABLE xxx (...) TYPE=HEAP; 2.每次排序完,資料以全部送到前端後,清空資料表: TRUNCATE TABLE xxx; 省去建立暫存資料表以及刪除的動作,效能會比較理想。 不過這時可能就要注意一下系統分配給MySQL daemon的記憶體配置以及 相關議題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.16.1.95
文章代碼(AID): #13JulVl2 (PHP)
文章代碼(AID): #13JulVl2 (PHP)