fulltext+join.. :(

cDLEON

Онанист РНРСlub
fulltext+join.. :(

[sql]EXPLAIN SELECT A.file_id, A.name, A.path as path_cache, A.is_file, C.file_id
FROM
files as B, files as A
LEFT JOIN files as C ON C.file_level=A.file_level-1 AND C.file_left<A.file_left and C.file_right>A.file_right
WHERE
B.file_id=1
AND A.file_left BETWEEN B.file_left AND B.file_right
AND MATCH A.name AGAINST ('*золото*' IN BOOLEAN MODE)
[/sql]
PHP:
1  	SIMPLE  	B  	const  	PRIMARY  	PRIMARY  	4  	const  	1  	 
1 	SIMPLE 	A 	fulltext 	search_index 	search_index 	0 	  	1 	Using where
1 	SIMPLE 	C 	ref 	owner 	owner 	5 	func 	28709 	Using where
Последний запрос....
Что за шняга? :(

-~{}~ 25.07.09 13:18:

Ах да...В таблице 200к записей....
Без второго джойна запрос выполняется ~0.008, с ним - 20сек....
 

zerkms

TDD infected
Команда форума
за 4 года ещё не научился, что для таких вопросов жизненно необходимо выкладывать схему?
ну и - эксплейн оформлять в тег "code"
 

cDLEON

Онанист РНРСlub
zerkms
схема стандартная для nested sets, посему и не выкладывал.
[sql]
CREATE TABLE files(
file_id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR (255) NOT NULL,
file_level INT (11) UNSIGNED DEFAULT 0,
file_left INT (11) NOT NULL,
file_right INT (11) DEFAULT NULL,
is_file VARCHAR (1) DEFAULT '0',
path TEXT DEFAULT NULL,
PRIMARY KEY (file_id),
INDEX index1 USING BTREE (is_file),
INDEX owner USING BTREE (file_level, file_right, file_left),
FULLTEXT INDEX search_index (name)
)
ENGINE = MYISAM
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci;
[/sql]
Тег code у меня не фурычит. Пробывал.

-~{}~ 25.07.09 22:58:

Трохе напутал в условии с джойном - время поиска уменьшилось до 2.5сек... Но...Результат не удовлетворительный :(
Почему мускуль шуршит по индексу так много мне не понятно....Даже в обычном запросе без поиска всё те же 28к значений индекса просмотрено на одну запись...
 
Сверху