Текстовые индексы

 
0
 
MySQL
ava
Suic2 | 20.02.2013, 16:54
есть таблица

CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` tinytext NOT NULL,
`name` varchar(64) NOT NULL,
.................................................................................
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
) ENGINE=MyISAM AUTO_INCREMENT=11038 DEFAULT CHARSET=cp1251 COMMENT='rev_0'

очень много запросов вида

select * from users where ip='xxx.xxx.xxx.xxx';

как правильно создать индекс для этого поля?
пробовал создавать полнотекстовый индекс, но видимо это не то, что нужно, так как carninality у него была 1
ещё пробовал так:

CREATE INDEX ip  USING BTREE ON users (ip(15))

оно поможет?
Ответы (3)
ava
skyboy | 20.02.2013, 17:15 #
храни ip как число.
ava
Suic2 | 21.02.2013, 16:17 #
я бы и рад, но биллинг создавал не я и она уже слишком монстрообразная, чтобы так легко можно было изменить формат хранения ip
ava
Akina | 21.02.2013, 16:38 #
Полнотекст точно не нужен. Нужен обычный индекс. Но не факт что на всё поле.

Покажи пример данных в этом поле (особенно для одно- и двузначных чисел - есть там zerofill?) и опиши типичные параметры запросов (идёт пачка соседних адресов, или сплошной разнобой)...

Добавлено позднее:
К слову, на InnoDB и на MyISAM индекс и так по умолчанию BTREE...
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  Akina   skyboy   Suic2
advanced
Отправить