我正在使用具有 300k 行的 Inno db 表(称为 test),其中包含以下字段:
id(int), sn(int), ts(timestamp), note(text), error_id(int)
索引是id
和。sn
ts
SELECT ts FROM test LIMIT 0, 100
平均需要 0.3-0.35 秒,
而其他一切都SELECT id FROM test LIMIT 0,100
需要 0.04 秒。
只有在选择*
或选择ts
时,选择完成需要大量时间才能完成。
你知道为什么会发生这种情况吗(通过 ts 执行 SELECT 的时间比其他时间多 10 倍?)
真实表:
CREATE TABLE `production_list_log` (<br/>
`id` int(11) NOT NULL AUTO_INCREMENT,<br/>
`sn` int(11) NOT NULL,<br/>
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'ts - timestamp when ordercode arrived to this station\n',<br/>
`note` text COLLATE utf8_slovenian_ci,<br/>
`error_id` int(11) DEFAULT NULL COMMENT,<br/>
PRIMARY KEY (`id`),<br/>
KEY `fk_change_product_id` (`product_id`),<br/>
KEY `sn_ts_added_kalup` (`sn`,`ts`) USING BTREE,<br/>
CONSTRAINT `fk_change_product_id` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON UPDATE CASCADE<br/>
) ENGINE=InnoDB AUTO_INCREMENT=297567 DEFAULT CHARSET=utf8