2010-09-03 2 views
1

У меня есть таблица под названием tb, которая является innodb - имеет более 1 м строк.Создайте таблицу «alias» и измените тип таблицы

Я хочу сделать полнотекстовый поиск на столе, но я не могу этого сделать, потому что его innodb.

Итак, как я могу создать «псевдоним» из Тб называется ТВ2, что означает (дубликат таблицы, которая автоматически обновляется, когда данные -ном обновлений, но изменить тип табличного tb2 to myisam)?

Так что, как я могу сделать полнотекстовый поиск по ТВ2, найти идентификаторы и ВЫБРАТЬ идентификаторы из ТВ1

+0

Спасибо за обмен. Пожалуйста, отредактируйте ваше сообщение, чтобы включить свой вопрос (ы) об этом. – 2010-09-03 22:31:00

ответ

0
  • создать таблицу с той же структурой, но MyISAM двигатель
  • использования триггеры для INSERT, UPDATE, DELETE для поддержания согласованного состояния между двумя таблицами

Но будьте осторожны, поскольку это сделает операции записи медленнее.

+0

, что является решением его конкретной проблемы, но общая проблема заключается в том, что эта таблица имеет слишком много данных. Либо осколки, либо другой БД следует использовать специально для текстового поиска – Quamis

4

Я лично считаю, что это не очень хорошая идея, потому что это замедлит запись и объем данных, который у вас есть, ваши поисковые запросы будут медленными. Я искренне рекомендую посмотреть в специальный полный текст поисковой системы, как Сфинкса

http://sphinxsearch.com/

0

Во-первых, вы можете создать таблицу, используя следующий синтаксис:

create table tb2 like tb; 

Это создает таблицу с та же структура индекса, что и tb. Затем измените таблицу, чтобы сделать его MyISAM:

alter table tb2 engine='myisam'; 

Затем скопируйте поверх существующей информации:

insert into tb2 select * from tb; 

Для того, чтобы сохранить данные, то тогда нужно будет создать три спусковые по туберкулезу. .. after insert, after update, и after delete. Каждое событие вставляло/обновляло/удаляло соответствующую строку в tb2.

Смежные вопросы