2010-09-03 15 views
1

J'ai une table appelée tb qui est innodb - a plus de 1m lignes.Créer une table "alias", et changer le type de table

Je veux faire une recherche de texte intégral sur la table, mais je ne peux pas faire cela parce que son innodb.

Alors, comment puis-je créer un « alias » de tb appelé TB2, ce qui signifie (un double de la table, qui met à jour automatiquement lorsque les données de tb mises à jour, mais changer le type de table tb2 à myisam)?

Ainsi, de cette façon, je peux faire une recherche en texte intégral sur TB2, trouver les cartes d'identité et SELECT les ids de TB1

+0

Merci pour le partage. S'il vous plaît modifier votre message pour inclure votre question (s) à ce sujet. –

Répondre

0
  • créer une table avec la même structure mais le moteur MyISAM
  • utilisation déclenche INSERT, UPDATE, DELETE pour maintenir l'état cohérent entre les deux tables

Mais attention, car cela ralentira les opérations d'écriture.

+0

qui est une solution à son problème spécifique, mais le problème général est que cette table a beaucoup trop de données. Une base de données ou une autre base de données doit être utilisée spécifiquement pour la recherche de texte – Quamis

4

Personnellement, je pense que ce n'est pas vraiment une bonne idée car cela va ralentir les écritures et avec la quantité de données que vous avez, vos recherches en texte intégral seront lentes. Je recommande sincèrement que vous regardez dans un moteur de recherche de texte intégral dédié comme Sphinx

http://sphinxsearch.com/

0

Tout d'abord, vous devez créer une table en utilisant la syntaxe suivante:

create table tb2 like tb; 

Cela crée une table avec la même structure d'index que tb. Ensuite, modifier la table pour la rendre MyISAM:

alter table tb2 engine='myisam'; 

Ensuite, copiez les informations existantes:

insert into tb2 select * from tb; 

Afin de maintenir l'info, vous devrez alors créer trois déclencheurs sur tb. .. after insert, after update et after delete. Chaque événement insère/met à jour/supprime la ligne correspondante dans tb2.