SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.06.2008 16:45:08

Валет-69
Завсегдатай
Зарегистрирован: 23.05.2008
Сообщений: 37

PRIMARY KEY и модификаторы TEXT, VARCHAR(1001), VARCHAR(1000)

Направляю базе такую команду:
CREATE TABLE table
(id INT  NOT NULL,
value TEXT NOT NULL
PRIMARY KEY (value)).

База отказывается выполнять.
Пишет, потому что не определено количество символов в value.
Та же реакция, если вместо модификатора TEXT использовать VARCHAR(1001).
Но выполняет чётко, если использовать VARCHAR(1000).

По какой причине?

Неактивен

 

#2 25.06.2008 17:12:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: PRIMARY KEY и модификаторы TEXT, VARCHAR(1001), VARCHAR(1000)

По причине того, что TEXT - это очень большое поле. Если индексировать его целиком, то
индекс будет просто мегаогромный, поэтому Вам предлагается ограничиться некоторым
количеством символов в индексе. Например, PRIMARY KEY (value (20));

Если Вам действительно нужно индексировать TEXT, можете воспользоваться FULLTEXT-индексом.

Неактивен

 

#3 25.06.2008 17:37:57

Валет-69
Завсегдатай
Зарегистрирован: 23.05.2008
Сообщений: 37

Re: PRIMARY KEY и модификаторы TEXT, VARCHAR(1001), VARCHAR(1000)

1) Точно так же функционирует база, если тип ключа UNIQUE?
2) Назовите максимальное количество символов для FULLTEXT.

Неактивен

 

#4 28.06.2008 21:50:57

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: PRIMARY KEY и модификаторы TEXT, VARCHAR(1001), VARCHAR(1000)

С этой точки зрения базе все равно, какого типа ключ. Будет ругаться на любой (кроме FULLTEXT, естественно), не только на PRIMARY.
На длину FULLTEXT-индекса ограничений нет.
О FULLTEXT подробнее здесь: http://dev.mysql.com/doc/refman/5.0/en/ … earch.html

Если будут совсем большие объемы (порядка терабайтов), то, говорят, лучше будет повесить на базу MySQL sphinx-сервер (см. http://sphinxsearch.com/). Но там тоже свои особенности...

Неактивен

 

#5 29.06.2008 22:34:38

Sign
Гуру
Зарегистрирован: 26.06.2008
Сообщений: 43

Re: PRIMARY KEY и модификаторы TEXT, VARCHAR(1001), VARCHAR(1000)

У FULLTEXT-индекса есть маленькая особеннность - когда он перестаёт помещаться в памяти скорость поиска падает слишком заметно
При 5Gb текста в 3.5M записей индекс получается порядка 3Gb
При подобных обьёмах поиск слова/фразы занимает около 0.3/3 секунд, что примерно на порядок и соответственно на два порядка больше чем уходит у сфинкса на тех же данных

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson