MySQL fulltext search boolean mode-ban nem használ index-et...
A problémám a következő. Van egy tábla, amiben több mezőre is tettem fulltextes indexet. Elég "nagy" a tábla majdnem 200MB, már az első keresésnél észrevettem, hogy a tíz másodperc az sok lesz egy egyszerű keresésre.
Ez volt a query:Megnéztem
Megdöbbentő, de nem használ indexet! Kipróbáltam egy nagyon apró módosítást a query-ben, OR helyett AND-et írtam. Újra
Láss csodát, működik az index! Kipróbáltam boolean mode nélkül, úgy működik. Egyszerűen nem értem, hogy ez mitől lehet! Lehet, hogy valami bug, vagy én nagyon nem értek valamit a fulltextes keresésben... Gugliztam is épp eleget, nem találtam semmit... :((
Környezet: MySQL 4.1.11-Debian_4sarge2-log, de megnéztem 4.1.14 alatt is, ott is rossz.
A tábla:Ötlet esetleg? :(
■ Ez volt a query:
SELECT *
FROM `content_langs`
WHERE
MATCH (lead) AGAINST ('alma' IN BOOLEAN MODE)
OR
MATCH (content) AGAINST ('alma' IN BOOLEAN MODE)
EXPLAIN
-nel.id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, SIMPLE, content_langs, ALL, NULL, NULL, NULL, NULL, 0, Using where
1, SIMPLE, content_langs, ALL, NULL, NULL, NULL, NULL, 0, Using where
Megdöbbentő, de nem használ indexet! Kipróbáltam egy nagyon apró módosítást a query-ben, OR helyett AND-et írtam. Újra
EXPLAIN
.id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1 | SIMPLE | content_langs | fulltext | lead,content | lead | 0 | 1 | Using where
1 | SIMPLE | content_langs | fulltext | lead,content | lead | 0 | 1 | Using where
Láss csodát, működik az index! Kipróbáltam boolean mode nélkül, úgy működik. Egyszerűen nem értem, hogy ez mitől lehet! Lehet, hogy valami bug, vagy én nagyon nem értek valamit a fulltextes keresésben... Gugliztam is épp eleget, nem találtam semmit... :((
Környezet: MySQL 4.1.11-Debian_4sarge2-log, de megnéztem 4.1.14 alatt is, ott is rossz.
A tábla:
CREATE TABLE `content_langs` (
`id` int(11) NOT NULL auto_increment,
`content_id` int(11) NOT NULL default '0',
`lang` varchar(2) NOT NULL default '',
`uptitle` varchar(255) NOT NULL default '',
`title` varchar(255) NOT NULL default '',
`subtitle` varchar(255) NOT NULL default '',
`shorttitle` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`lead` text NOT NULL,
`content` text NOT NULL,
`modify_date` datetime default '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `content_id` (`content_id`,`lang`),
KEY `lang` (`lang`),
KEY `url` (`url`),
KEY `updatedate` (`modify_date`),
FULLTEXT KEY `uptitle` (`uptitle`),
FULLTEXT KEY `title` (`title`),
FULLTEXT KEY `shorttitle` (`shorttitle`),
FULLTEXT KEY `lead` (`lead`),
FULLTEXT KEY `content` (`content`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='xxx' AUTO_INCREMENT=0;
mysql-5.0.13-rc-win32
bug report
index kinyir
linkek?
Union-nal esetleg?