전체 텍스트 인덱스를 사용하여 컨텐트 (텍스트) 필드를 검색하는 MySQL 및 PHP로 작성된 사용자 정의 CMS의 코드베이스를 상속 받았습니다. 당신이 볼 수 있듯이텍스트 열에 대해 두 개의 전체 텍스트 인덱스가 실제로 필요합니까?
CREATE TABLE `stories` (
`story_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`headline` varchar(255) NOT NULL DEFAULT '',
`subhead` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
PRIMARY KEY (`story_id`),
FULLTEXT KEY `fulltext_search` (`headline`,`subhead`,`content`),
FULLTEXT KEY `headline` (`headline`),
FULLTEXT KEY `subhead` (`subhead`),
FULLTEXT KEY `content` (`content`)
) ENGINE=MyISAM;
은 전체 텍스트 인덱스가 일반적인 방법으로 만들어 지지만 각 열을 개별적으로 추가됩니다 데이터베이스 구조를 분석 할 때 나는 모든 관련 테이블이 다음과 같은 방식으로 (간체 예)에서 만든 것을 발견 뿐만 아니라 나는 두 가지 다른 지표를 창조한다고 믿는다.
나는 이전 개발자에게 연락을했고, 이것이 전체 텍스트 색인을 만드는 "적절한"방법이지만, 인터넷에서 발견 된 모든 단일 예에 따르면 그러한 요구 사항은 없으며 이것으로 충분할 것입니다 :
CREATE TABLE `stories` (
`story_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`headline` varchar(255) NOT NULL DEFAULT '',
`subhead` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
PRIMARY KEY (`story_id`),
FULLTEXT KEY `fulltext_search` (`headline`,`subhead`,`content`)
) ENGINE=MyISAM;
표는 80,000 행을 가지고 있으며 (전체 데이터베이스가 10기가바이트에 가까운) 관리가 점점 하드되고 그래서 불필요한 데이터를 제거하고 싶습니다.
미리 감사드립니다.
답변에 직접 관계가있는이 색인이나 색인을 어떻게 쿼리합니까? 예를 들어 콘텐츠 만 검색하는 쿼리가 있습니까? – Steve
사실 예, 검색 기능을 사용하면 검색을 수행하는 데 사용할 필드를 정의 할 수 있지만 MATCH() 문으로 처리되는 내 지식 (및 CMS의 관련 PHP 코드)은 다음과 같습니다. SELECT * 이야기에서 어디서 (내용) 일치 .. – Proteo