2010-08-09 4 views
0

я получаю следующее сообщение об ошибке при попытке добавить полнотекстовый индекс к названию, издание и автора в моей базе данных MySQL:ключ FULLTEXT слишком долго

указанный ключ был слишком долго; длина ключа составляет не более 1000 байт

Вот столбцы:

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

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

Причина, по которой я добавляю этот индекс FULLTEXT, позволяет людям искать книги, используя ключевое слово, которое может включать Title, The Edition или Author.

+0

Ответ на этот вопрос уже дан [здесь] (http://stackoverflow.com/questions/3489041/mysqlerror-specified-key-was-too-long-max-key-length-is-1000-bytes/3489331 # 3489331). –

ответ

1

У MySQL есть предел на то, сколько места выделено для индексов - it's 1000 bytes for MyISAM, 767 for InnoDB.

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

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

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

+0

большое спасибо – babonk

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