Ключ FULLTEXT слишком долго

Я получаю следующую ошибку при попытке добавить ПОЛНОТЕКСТОВЫЙ ИНДЕКС к Заголовку, Выпуску и Автору в моей базе данных MySQL:

Указанный ключ был слишком длинным; макс. длина ключа составляет 1 000 байтов

Вот столбцы:

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

Ни один из них не уникален.. Даже комбинация всех 3 не уникальна. Первичным ключом на базе данных является ISBN.

Причиной я добавляю этот ПОЛНОТЕКСТОВЫЙ ИНДЕКС, являются так люди, может искать книги с помощью ключевого слова, которое могло бы включать Заголовок, Выпуск или Автора.

1
задан OMG Ponies 9 August 2010 в 04:57
поделиться

1 ответ

MySQL имеет ограничение на то, сколько места выделяется для индексов - это 1000 байт для MyISAM, 767 байт для InnoDB .

Единственный способ обойти ограничение - определить ключи, которые индексируют часть столбца - это означает, что это все, что будет в индексе, ограничивая его значение:

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

Это проиндексирует первые 100 символов столбца заголовка , весь столбец издания и 100 знаков столбца авторов. Я считаю, что это соотношение 3: 1 для столбцов VARCHAR, поэтому VARCHAR (250) занимает 750 байт.

2
ответ дан 2 September 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: