3

私が取り組んでいるプロジェクトには、検索する必要のある列ごとに、FULLTEXTインデックスを持つ「ft[columnname]」という2番目の列があり、この列のみが検索されます。

この列には、次の方法で元の列から自動的に生成される「最適化された」テキストが含まれています。

  • 文字列は小文字です
  • すべてのアクセントが削除されます
  • すべての句読点と検索できない文字が削除されます
  • 重複した単語はすべて削除されます
  • すべての単語は、長いものから短いものへと並べ替えられます
  • 私が本当に理解していない他の変換(結合された単語に関連する)

たとえば、「私はポケモン、特にピカチュウが好きです!」「特に私のようなポケモンピカチュウ」になります。

(非常に小さなものでも)パフォーマンス上の利点はありますか?データベース内のデータが動的に変更されることはありません。

4

2 に答える 2

1

特定のアプリケーションには機能上の利点があるかもしれませんが、データを重複して保存するとパフォーマンスが大幅に低下し、利点にはなりません。

データが 2 倍になったので、データ セットが十分に大きいと仮定すると、さまざまなレベルのキャッシュ (MySQL、OS など) で保持できるのはその半分だけです。通常のボトルネックです。

そうは言っても、ft インデックス付き列でシングルバイト文字セットを使用し、元のテキストでマルチバイト文字セットを使用する場合、全文インデックスはそうでない場合よりもはるかに小さくなる可能性があります。

于 2010-11-17T21:23:25.233 に答える
-3

正直なところ、2列目では実行しないでください。そうすることで、実稼働テーブルにMyISAMストレージエンジンを使用していることを意味します。(または、一部のデータを失う余裕がある場合は先に進んでください)。

実際、パフォーマンスには関心があるため、 Sphinxなどの有能な全文検索エンジンの使用を検討する必要があります:http ://www.sphinxsearch.com/

于 2010-08-12T16:59:25.283 に答える