我有一個238列的MySQL InnoDB表。其中56個是TEXT類型,27個是VARCHAR(255)。對於大量列,MyISAM類型表比InnoDB更好嗎?
當用戶有時插入數據時,我得到MySQL錯誤139。經過研究,我發現我可能會遇到InnoDB行大小/列大小/列數限制。 (我是這麼說的,因爲這三件事情的具體限制是相互依賴的。)
Docs on InnoDB給出了限制的想法。如果我把這個表切換到MyISAM,它可能解決這個問題嗎?
我瞭解65,535字節的最大行大小。我想我以某種方式達到了InnoDB額外的8000字節限制。
切換到PostgreSQL也是一個遠程選項,但會花費更長的時間。
關於列的數量:
由該表支持的類代表的問卷。有數百個問題。
每列表示一個屬性,清楚明確地屬於類CapitalGrantProposal
而不是其他類。
我可以將列分佈在多個表中 - 我可以有表capital_grant_proposal_part_1s
,capital_grant_proposal_part_2s
等。但是,這會增加複雜性,因爲沒有好的目的。
更新:
試圖使該表MyISAM和它的作品。所以我用InnoDB得到了MySQL錯誤139,但與MyISAM沒有關係。
出於好奇,爲什麼你有這麼多列? – Amber 2010-03-30 20:28:00
你有沒有考慮過,如果你的餐桌結構是一個好設計,或者你應該重新設計它? 238列聽起來很瘋狂。 – 2010-03-30 20:28:36
爲什麼?因爲它來自業務需求。什麼是瘋狂的呢?這是2010年。當代的RDBMS應該能夠輕鬆處理帶有100個cols的表格。我是否考慮過這是一個好的設計?是。 – Ethan 2010-03-30 20:44:00