1

MySQL データベースの Title、Edition、Author に FULLTEXT インデックスを追加しようとすると、次のエラーが発生します。

指定されたキーが長すぎます。キーの最大長は 1000 バイトです

列は次のとおりです。

`Title` varchar(255) NOT NULL,
`Edition` varchar(20) default NULL,
`Authors` varchar(255) default NULL,

それらのどれもユニークではありません.. 3 つすべての組み合わせでさえもユニークではありません. データベースの主キーは ISBN です。

この FULLTEXT インデックスを追加する理由は、人々がタイトル、エディション、または著者を含むキーワードを使用して書籍を検索できるようにするためです。

4

1 に答える 1

2

MySQL には、インデックスに割り当てられるスペースの量に制限があります。 MyISAM では 1000 バイト、 InnoDB では 767 バイトです

制限を回避する唯一の方法は、列の一部にインデックスを付けるキーを定義することです。これは、インデックスに含まれるすべてのものを意味し、その値を制限します。

CREATE INDEX index_name ON YOUR_TABLE(title(100), edition, authors(100));

これにより、タイトル列の最初の 100 文字、エディション列のすべて、著者列の 100 文字がインデックス化されます。VARCHAR 列の比率は 3 対 1 だと思うので、VARCHAR(250) は 750 バイトかかります。

于 2010-08-09T04:57:38.570 に答える