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?