如果我存儲長度爲1000的數據,使用varchar是一個好主意嗎?以下是我的腳本和專欄SR_NOTES是我擔心的一個。我用戶utf8和引擎是INNODB。比如TINYTEXT會比較明智嗎?我熱衷於創建數據庫設計而不會影響性能。MySQL - 存儲在varchar長度爲1000
CREATE TABLE IF NOT EXISTS SROR (
SROR_ID INT UNSIGNED NOT NULL,
CRAN_ID INT UNSIGNED NOT NULL,
SR_TAGS VARCHAR(250) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL,
GR_VALUES DECIMAL(4,2), -- 12.25 R
NOTICE_PERIOD SMALLINT UNSIGNED DEFAULT NULL,
C_STATUS VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' DEFAULT 'INACTIVE',
SR_NOTES VARCHAR(1000) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' DEFAULT NULL,
SR_CONTROL VARCHAR(10) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' DEFAULT NULL,
START_DATE DATETIME DEFAULT CURRENT_TIMESTAMP,
LAST_UPDATE DATETIME ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (SROR_ID, CRAN_ID),
INDEX idx_SROR_id1 (SROR_ID ASC),
INDEX idx_SROR_id2 (CRAN_ID ASC),
CONSTRAINT fk_SROR_C1
FOREIGN KEY (CRAN_ID)
REFERENCES R_CONFIG (CRAN_ID)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
255是一個varchar的最大字符長度。我只使用TEXT,甚至不使用小文本。除非您試圖在這些文本塊上編制索引,否則它不會妨礙數據庫的性能。 – skrilled
'varchar'長度僅爲'255',所以你需要去'tynitext'。坦克 –
實際上mysql中的varchar限制是'65,535'而不是'255'。要回答你的問題,實際上可以通過這個[問題](http://stackoverflow.com/questions/2023481/mysql-large-varchar-vs-text)回答 – Augwa