2 개의 테이블로 나눌 것인지 아닌지에 대한 약간의 딜레마가 있으며, 텍스트 컬럼을 포함하는 큰 (수백 K 레코드) 테이블입니다.ORMS 뒤의 텍스트 컬럼을 가진 MySQL 대형 테이블
질문 상점 뉴스 기사의 표 :
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, 라벨을 잡아 것입니다, 열 모두 포함 dateCreated) 및
ORM 작업, 그러나, 객체가 페치 원하지 않는 사람 (특히 비 대한 텍스트 열) 제외, 그래서 가장 최근의 50 잡아 기사가 약간의 간접비를 초래할 것입니다, 어쩌면 엄청나게 그렇게하지는 않을 것입니다. 이 경우에는 SQL을 작성할 때 모든 필드를 포착하지 않으려 고합니다.
ORM 현실을 감안할 때 텍스트 열을 별도의 관련 테이블로 나눌 필요가 없거나 ORM grab-the-whole-enchilada 규칙을 따르고 사이트 트래픽이 더 효율적일 때 걱정할 필요가 없습니다. , 2 테이블 솔루션?
생산 중에는 ORM이없는 단일 테이블, 문자열 기반 SQL이 있습니다. 개발 중에는 모든 쿼리에 대해 기사 텍스트를 포함한다는 (완벽 주의자) 생각을 다룰 수 없어서 테이블이 깨졌습니다. 이 게시물은 ORM 컨벤션으로 가거나 SQL 컨벤션으로 가고 싶습니다. 필자가 가장 선호하는 것은 후자입니다. – virtualeyes