|
|
|
| Есть у меня табличка:
CREATE TABLE 'creator' (
'file_id' int(11) NOT NULL auto_increment,
'project_id' int(11) NOT NULL default '0',
'file_name' tinytext NOT NULL,
'file_data' longtext NOT NULL,
'file_comment' text NOT NULL,
'change_date' datetime NOT NULL default '0000-00-00 00:00:00',
'user' tinytext,
'pumpkin_id' tinytext,
PRIMARY KEY ('file_id'),
UNIQUE KEY 'project_id' ('project_id','file_name'(255))
) TYPE=MyISAM
|
запрос
SELECT count( * ) FROM 'creator' WHERE project_id =1
|
выводил количесво файлов в проекте (для постраничной навигации)
После обновления MySQL до версии 4.1.14, этот же запрос начал выводить результат 2, вместо 70. При удалении уникального индекса, или при исправлении запроса
SELECT count(имя поля) FROM 'creator' WHERE project_id =1
|
все начинает работать нормально.
Что это за шутки? Криво собранный сервер? Какие-то подводные камни с индексами? Просто глюк?
Короче, хочется понять. Так как подобная конструкция (за исключением уникального индекса на два поля) используется достаточно часто. | |
|
|
|
|
|
|
|
для: Loki
(04.05.2006 в 16:39)
| | Не должно быть такой белиберды... ничего хитрого в my.cnf или my.ini не прописано? Может включён какой-нибудь SQL-режим? Попробуйте по таблице пройтись оператором OPTIMIZE TABLE - он перестоит индекс таблицы - скорее всего порушился файл индекса в результате перехода на новую версию MySQL. | |
|
|
|
|
|
|
|
для: cheops
(04.05.2006 в 20:57)
| | ну индекс я пересоздавал несколько раз... будем искать... | |
|
|
|
|
|
|
|
для: cheops
(04.05.2006 в 20:57)
| | Все попробовал... результат повторяемый. Создал даже простейшую таблицу:
CREATE TABLE 'creator' (
'file_id' int(11) NOT NULL auto_increment,
'project_id' int(11) NOT NULL default '0',
'file_name' tinytext NOT NULL,
'file_data' longtext NOT NULL,
'file_comment' text NOT NULL,
'change_date' datetime NOT NULL default '0000-00-00 00:00:00',
'user' tinytext,
'pumpkin_id' tinytext,
PRIMARY KEY ('file_id'),
UNIQUE KEY 'project_id' ('project_id','file_name'(255))
) TYPE=MyISAM AUTO_INCREMENT=6 ;
--
-- Дамп данных таблицы 'creator'
--
INSERT INTO 'creator' VALUES (1, 1, 'test', 'test', 'test', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (2, 1, 'тест1', 'тест1', 'тест1', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (3, 1, 'тест2', 'тест1', '', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (4, 1, 'тест3', 'тест1', 'тест1', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (5, 1, 'тест4', 'тест1', '', '0000-00-00 00:00:00', NULL, NULL);
|
И тут результат тот же... значит дело не в побитости индексов. | |
|
|
|
|