SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 29.01.2008 09:31:40

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Индексы не работают (почему то)

Странные дела, товарищи, подскажите советом.
Mylsq 5.0.45
MS Server 2003R2x64


Есть скрипт, который герерит довольно большую БД, с таблицами примерно по 1,5-2 Гб
В частности он создает индексы. Но если после генерации сделать  SHOW INDEX FROM table то можно наблюдать вот такую картину:

Table     Non_unique     Key_name     Seq_in_index     Column_name     Collation     Cardinality     Sub_part     Packed     Null     Index_type     Comment
table     0     PRIMARY     1     code     A     1     NULL     NULL           BTREE     
table     1     ix_f1     1     f1     A     1     NULL     NULL     YES     BTREE     
table     1     ix_f2     2     f2     A     1     NULL     NULL     YES     BTREE     
table     1     ix_f3     3     f3     A     1     NULL     NULL     YES     BTREE     
table     1     ix_f4     1     f4     A     1     NULL     NULL     YES     BTREE     
....................................
table     1     ixf_fn     1     fn    NULL     NULL     NULL     NULL     YES     FULLTEXT

Т.е. у всех индексов Cardinality = 1 и индексы при последующих запросах не используются.
Таблиц таких много, для большинства из них индексы создаются нормально, а для некоторых вот такая фигня
Если выполнить анализ таблиц - то все стает на свои места, но это имхо не объясняет в чем проблема.

Еще момент, раньше сервер был на Unix (с точно таким же набором скриптов и таблиц) - там этой проблемы не было

Неактивен

 

#2 29.01.2008 11:25:36

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

Re: Индексы не работают (почему то)

Вообще говоря, после вставки большого количества данных, рекомендуется анализировать
таблицы. Как альтернативу можно использовать ALTER TABLE DISABLE/ENABLE KEYS до и
после больших вставок (что ускорит вставки и обновит индекс целиком в конце).

Почему работало на UNIX - сложный вопрос. Другая версия MySQL?

Неактивен

 

#3 29.01.2008 12:02:14

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Индексы не работают (почему то)

версия mysql одинаковая - 5.0.45
disable/enable keys и используется, в том то и дело

загрузка происходит вот так:

Код:

alter table t1_temp disable keys; <- выключаем ключи

load data local infile "../data.csv" into table t1_temp; <- здесь вгружаем данные во временную таблицу

rename table t1_temp to t1;  <- переименовываем 

alter table t1 enable keys; <- включаем ключи

analyse не хочется просто вписать, потому что это больше похоже на заплатку. Я понимаю, что его рекомендуется использовать, но без него индексы тоже должны создаваться, пусть и использоваться не самым корректным образом.

Неактивен

 

#4 29.01.2008 12:32:15

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Индексы не работают (почему то)

Есть еще и другие таблицы, тоже большие, вот пример show index:

Table     Non_unique     Key_name     Seq_in_index     Column_name     Collation     Cardinality     Sub_part     Packed     Null     Index_type     Comment
t_fields     1     nKey     1     nKey     A     NULL     NULL     NULL     YES     BTREE     
t_fields     1     nKey     2     nField     A     NULL     NULL     NULL     YES     BTREE

вообще NULL!!!!

до кучи вот структура:

CREATE TABLE `t_fields` (
  `nField` tinyint(4) default NULL,
  `nKey` int(11) default NULL,
  `nRecordKey` int(11) default NULL,
  KEY `nKey` (`nKey`,`nField`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251

в чем может быть дело? в лога ничего особенного не надлюдается.
если сделать enable  keys - ничего не меняется

Отредактированно Shopen (29.01.2008 12:33:01)

Неактивен

 

#5 29.01.2008 15:26:00

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Индексы не работают (почему то)

Про NULL это я наврал - глаз замылился и не заметил, что таблица пустая, вот и null.

В заполненной таблице стоят единицы. Any ideas?

Неактивен

 

#6 30.01.2008 08:22:31

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

Re: Индексы не работают (почему то)

Данные секретные? Можете прислать кусочек на поковыряться? Такое впечатление,
что это таки бага MySQL sad

Неактивен

 

#7 30.01.2008 10:37:42

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Индексы не работают (почему то)

нет, не секретные smile

почта?

Неактивен

 

#8 30.01.2008 11:29:43

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

Re: Индексы не работают (почему то)

sakila@sqlinfo.ru smile

Неактивен

 

Board footer

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