2010-12-10 57 views
0

我的團隊已經添加了這些聲明與創建表的列被定義後:MySQL的create table命令附加功能的問題

ENGINE = MyISAM的默認字符集= UTF8 CHECKSUM = 1個DELAY_KEY_WRITE = 1個ROW_FORMAT = DYNAMIC AUTO_INCREMENT = 465

問題是表是一個國家查找表。所以我們知道它有一個固定的列表值約爲275-ish。而這張表將99%爲只讀表格。如果我需要更新任何colunm屬性,則非常罕見。

那麼我需要超出'ENGINE = MyISAM DEFAULT CHARSET = utf8'之外的所有東西嗎?這只是一張桌子,他們對於所有大多數桌子都有這些,我無法理解爲什麼查找表會包含所有這些命令/

+0

你確定這些手動添加?我與Oracle和Toad合作並頻繁地提取數據庫對象的ddl。即使您使用最低限度的語法創建表,當您提取DDL(使用工具/ API)時,它會添加創建原始表時未提供但基於數據庫設置默認的所有附加選項。 – 2010-12-10 20:36:40

+0

它是phpMyAdmin SQL Dump的一部分。所以我想有人添加它,無論是團隊還是工具? – mikey 2010-12-10 20:43:06

回答

0

您可以查看the CREATE TABLE doc中的所有內容。

你是對的。對於你描述的背景,他們幾乎肯定是完全沒有必要的。

旁白

回覆:AUTO_INCREMENT爲您CREATE TABLE一部分 - 是的,這只是因爲它是一個現場表的SHOW CREATE TABLE的一部分,而不是因爲它是您的團隊的意圖的一部分/正在進行腳本。沒什麼大不了的。

請注意,CHECKSUMDELAY_KEY_WRITE僅適用於MyISAM表格。如果該表是InnoDB,那麼這兩個參數帶來的結果可以被隱式地關注(即表格完整性和寫入問題)。

爲什麼我們需要innoDB作爲只讀查找表?我認爲innoDB更適合寫密集表嗎?

對不起。我並不是想暗示你需要 InnoDB。這只是一個反射。 :)

Wheater與否InnoDB的寫作效果取決於使用模式/應用程序。對於你的情況,我不希望你看到你使用MyISAM或InnoDB時的性能差異。無論如何,作爲一個經驗法則,因爲InnoDB可以耐酸,更能抵抗腐敗,並存儲在內存中(在InnoDB的緩衝池中),我總是主張這一點。 MyISAM在所有這些方面都失敗。

+0

它是phpMyAdmin SQL Dump的一部分。但爲什麼我們需要innoDB只讀查找表?我認爲innoDB更適合寫密集表嗎?至於自動增量,我不確定。它的價值是465,但由於世界上沒有這麼多的國家,所以這張桌子不會超過275件,所以我不確定。 – mikey 2010-12-10 20:42:42

+0

@ mikey - 查看更新** Asides ** – Riedsio 2010-12-10 21:06:03