Re: [討論] 需要下條件的欄位太多

看板Database作者 (迷惘)時間9年前 (2014/12/05 17:14), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串2/5 (看更多)
或許可以從兩個方面來解決。 1、分割table。 會查超久,除了條件複雜外,資料量肯定也多。 看有沒有什麼屬性是可以用來拆成幾張table,讓資料大量減少的。 例如「料件的生產日期」?會不會很多舊的料件已經很少在用或很少會查的, 通通移到另一個table。 或是某個屬性的值是有限,且必選的, 例如料件的「種類」可能固定就是50個,而且在查詢時是必填的, 那就拆成50張table來放。 2、設幾個常用的index,index是多個常用條件的組合。 如果有些條件是查詢時必填的話更好,一定要設成index。 另外注意一點,當user選完所有的條件,你要組成sql的時候, 與index有關的條件,要自動排在where的最前面,以讓DB去使用到你設的index。 如此多的查詢條件,我猜sql只能用程式動態組出來會比較靈活, 所以程式裡要寫一堆if...else來判斷和盡量組合出能用上index的where條件。 index的設計需要一些經驗,有些欄位不適合,或是有的要排前,有的要排後, 我不曉得你之前有沒有碰過。 ※ 引述《bohei (run and fall)》之銘言: : 大家好 目前遇到的問題很簡單也很複雜XD : 例如料件表,光描述這顆料件的屬性就有50~60的欄位 : 當要對料件下詳細的條件時,勢必要對這幾十個欄位下條件 : WHERE條件就長長串,也影響到查詢的速度... : 不知道遇到這情形,大家是怎麼克服的? : ## : 補充: : 條件會是一組一組的,可能分成幾十組條件(每一組條件就是下幾十個欄位).. : 這幾十組跑完都天黑了..XD : ## : 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.241.82 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1417770891.A.52A.html

12/05 17:27, , 1F
不太懂為什麼種類要拆成50個table
12/05 17:27, 1F

12/05 17:28, , 2F
1,種類A 2,種類B 這樣要拆開成不同table的意思嗎?
12/05 17:28, 2F

12/05 18:49, , 3F
嗯,應該是那個意思,以種類分成各個table
12/05 18:49, 3F

12/05 18:49, , 4F
回原PO:謝謝,不過公司的產品其實已經有一套完整的架構了
12/05 18:49, 4F

12/05 18:50, , 5F
料號這table實在是不太可能再去動到架構,再說料號的table
12/05 18:50, 5F

12/05 18:50, , 6F
在......我另外回一篇文提出我的想法~
12/05 18:50, 6F

12/08 13:13, , 7F
拆table效能會更差
12/08 13:13, 7F
文章代碼(AID): #1KWNUBKg (Database)
討論串 (同標題文章)
文章代碼(AID): #1KWNUBKg (Database)