SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 01.01.2016 22:00:30

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

как правильно проиндексировать таблицу

доброе время суток

мне необходимо проиндексировать таблицу. она имеет приблизительно такой вид:

CREATE TABLE IF NOT EXISTS `tags` (
`item_id` int(11) unsigned NOT NULL,
`tag` varchar(16) NOT NULL,
`disc` int(11) unsigned NOT NULL,
`speed` int(11) unsigned NOT NULL,
`capacity` int(11) unsigned NOT NULL,
`weight` int(11) unsigned NOT NULL,
`height` int(11) unsigned NOT NULL,
`color` tinyint(4) unsigned NOT NULL,
`warranty` tinyint(4) unsigned NOT NULL,
`manufacturer_id` tinyint(4) unsigned NOT NULL,
`status` tinyint(4) unsigned NOT NULL,
`action` tinyint(4) unsigned NOT NULL,
`discount` int(11) unsigned NOT NULL,
`wholesale_price` int(11) unsigned NOT NULL,
`parent_id` int(11) unsigned NOT NULL,
`brand_id` int(11) unsigned NOT NULL,
`country_id` int(11) unsigned NOT NULL,
`region_id` int(11) unsigned NOT NULL,
`city_id` int(11) unsigned NOT NULL,
`rate` int(11) unsigned NOT NULL,
`price` int(11) unsigned NOT NULL,
`quantity` int(11) unsigned NOT NULL,
`dynamic` int(11) unsigned NOT NULL,
`pd` int(11) unsigned NOT NULL
`rd` int(11) unsigned NOT NULL
`ld` int(11) unsigned NOT NULL
`md` int(11) unsigned NOT NULL,
`xd` int(11) unsigned NOT NULL,
`pd` int(11) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


как вы уже наверняка поняли это таблица тегов и характеристик неких товаров. таких товаров больше 10 миллионов и на один товар может быть в среднем в районе 10 тегов они образуються путем деления полного названия товара на [^a-z0-9]. остальные столбцы кроме `item_id` это характеристики товаров.

существует поиск который дает возможность пользователю выбирать любые характеристики и в любой спайке друг с другом, т.е. пользователь может указать что ему нужны товары например только с каким-то определенным `manufacturer_id` или с определенным `speed`, или с определенными `speed` и `manufacturer_id`, или вообще указать определенный параметр для каждой характеристики в том числе еще и указать какой-нибудь `tag`.

поэтому вопрос - как правильно тут проставить индексы? каждому полю отдельно или создать какой-то общий индекс для всех полей? и это учитывая то что сама по себе таблица будет содержать десятки миллионов строк!

заранее благодарен за помощь!

Неактивен

 

#2 02.01.2016 17:38:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: как правильно проиндексировать таблицу

общие ответы на все ваши вопросе есть тут:
http://sqlinfo.ru/forum/viewtopic.php?id=151

Неактивен

 

Board footer

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