对于是否将包含文本列的大型(数百 K 条记录)表分成 2 个表,有点进退两难。
有问题的表存储新闻文章:
CREATE TABLE `article` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`articleType` varchar(7) DEFAULT NULL,
`dateCreated` datetime NOT NULL,
`label` varchar(75) NOT NULL,
`lastUpdated` datetime NOT NULL,
`reporter` mediumint(8) unsigned NOT NULL,
`text` text NOT NULL
PRIMARY KEY (`id`),
KEY `reporter-fk` (`reporter`),
CONSTRAINT `reporter-fk` FOREIGN KEY (`reporter`) REFERENCES `reporter` (`id`)
)
因此,重要的是,在直接 SQL 中,当您想要获取头条新闻(最新消息)时,您将获取您想要的列(id、label、dateCreated)并排除您不想要的列(尤其是臃肿的文本列)
然而,在使用 ORM 时,会获取一个包含所有列的对象,因此抓取 50 篇最新文章会产生一些开销,也许不是很大,但足以让我有点畏缩。在编写直接 SQL 时,永远不要在这种情况下获取所有字段。
鉴于 ORM 的现实,我应该将文本列分成一个单独的相关表,还是不打扰,只需使用 ORM 抓取整个 enchilada 约定并在站点流量需要更高效的 2 表解决方案时担心它?