Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Есть таблица MyISAM с количеством записей около 30млн.
CREATE TABLE IF NOT EXISTS `files` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user` tinytext,
`file_name` tinytext,
`tth` tinytext,
`size` bigint(20) DEFAULT NULL,
`dop_1` tinytext,
`file_type` int(1) DEFAULT NULL,
`dop_3` int(11) DEFAULT NULL,
`old_list` tinyint(1) DEFAULT NULL,
`way_to_file` text,
PRIMARY KEY (`id`),
KEY `tth` (`tth`(10)),
KEY `user` (`user`(4)),
KEY `file_type` (`file_type`),
KEY `for_del` (`old_list`),
KEY `new_index` (`user`(3),`old_list`),
FULLTEXT KEY `file_name` (`file_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Мне необходимо делать полнотекстовый поиск по полю file_name. При этом, хотелось бы, чтобы полнотекстовый поиск осуществлялся только в записях с определённым file_type. Как это сделать? Или так: как наиболее правильно составить поисковый запрос для наиболее быстрого поиска?
Спасибо.
PS: Иначе выбока получается очень долгая...
Неактивен
К сожалению, никак. При выборке из таблицы можно использовать только один
индекс. А file_type — это реально INT или на самом деле ENUM?
Неактивен
Жаль. Спасибо.
file_type - Поле создавалось как INT и везде отображается как INT. Видимо, реально INT:)
А это играет какую-то роль в данной ситуации?
Неактивен
Ну просто если бы их было, скажем, три вида, и выбирать нужно было бы один,
я бы посоветовал Вам сделать три таблички и искать в одной по полнотекстовому
индексу
Неактивен
Их 9 видов. Однако я уже исправляю на то, как Вы советуете Так в любом случае быстрее, чем всю таблицу смотреть.
Неактивен
Вопрос:
Полнотекствый поиск будет быстее осуществляться в поле с кодировкой cp1251, чем в поле с кодировкой utf-8?
Если да, то хотя бы ориентировочно, насколько быстрее?
Неактивен
Вопрос не в «быстрее». Полнотекстовый поиск работает с ошибками с многобайтовыми
кодировками, поэтому сравнивать нечего. Только cp1251. Ну или sphinx.
Неактивен