Есть ли альтернатива?

Motor

Guest
Есть ли альтернатива?

Существует ftp-поиск. Вот структура таблиц:

CREATE TABLE `hosts_main` (
`idx` mediumint(9) NOT NULL auto_increment,
`host` varchar(50) NOT NULL,
PRIMARY KEY (`idx`),
UNIQUE KEY `host` (`host`))

CREATE TABLE `dir` (
`idx` mediumint(9) NOT NULL auto_increment,
`dir` varchar(240) NOT NULL,
`host_idx` mediumint(9) NOT NULL,
PRIMARY KEY (`idx`),
FULLTEXT KEY `dir` (`dir`))

CREATE TABLE `file` (
`file` varchar(120) NOT NULL,
`date` date NOT NULL,
`size` mediumint(9) NOT NULL,
`dir_idx` mediumint(9) NOT NULL,
FULLTEXT KEY `file` (`file`))

В таблицах dir ~ 200 000 записей, file ~ 4 000 000

Запрос:
select file, dir, host, date, size from file, dir, hosts_main where match (file) against ('"search"' IN BOOLEAN MODE) and file.dir_idx=dir.idx and dir.host_idx=hosts_main.idx order by date

Вопросы:
1. Можно ли оптимизировать это дело?
2. Как использовать LIKE (т.к. хотелось бы юзать шаблоны % и _) в запросе без катастрофического падения производительности?
 

chira

Новичок
построй индексы для полей связи
dir.host_idx
file.dir_idx

-~{}~ 18.05.04 11:05:

ты всегда ищешь только файл?
 

Motor

Guest
Вообще-то нет...
Вот полный запрос:

select file, dir, host, date, size from file, dir, hosts_main where match (file) against ('$ma' IN BOOLEAN MODE) and file.dir_idx=dir.idx and dir.host_idx=hosts_main.idx $siz limit 5000 union SELECT 'null', dir, host, 'null', 'null' FROM dir, hosts_main WHERE match (dir) against ('$ma' IN BOOLEAN MODE) and dir.host_idx=hosts_main.idx order by date desc limit 5000

-~{}~ 18.05.04 15:48:

Originally posted by chira
построй индексы для полей связи
dir.host_idx
file.dir_idx
хм.. а разве они будет реально использоваться при вышеуказанном запросе?
 

chira

Новичок
посмотри EXPLAIN
для приведенного тобой запроса , скорее нет.
 
Сверху