powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как правильно проиндексировать таблицу
15 сообщений из 15, страница 1 из 1
как правильно проиндексировать таблицу
    #39141296
Yegor Zhdanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброе время суток

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
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`.

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

заранее благодарен за помощь!
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141298
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сомневаюсь, что структура соответствует предметной области и решаемым задачам. А если так - то какая нафиг разница, какие индексы ляпать?
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141301
Yegor Zhdanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

разница большая... от этого зависит скорость выполнения запросов!!!
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141305
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yegor Zhdanov
Код: sql
1.
2.
3.
`pd` int(11) unsigned NOT NULL
...
`pd` int(11) unsigned NOT NULL

Разве можно делать одинаковые поля в одной таблице?
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141306
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yegor Zhdanovот этого зависит скорость выполнения запросов!!!Каких именно запросов?
Индексы создаются для запросов. И для разных запросов могут быть нужны разные индексы.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141314
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yegor Zhdanovразница большая... от этого зависит скорость выполнения запросов!!!
А кривой структуре полпроцента - счастье, да только не всегда возможно.
А изменение структуры до правильной само по себе может дать разы...
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141316
Yegor Zhdanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

запоросы поисковые - т.е. 99% в основном select (в запросе возможны выражения типа group by ... HAVING count(*)= ...).
ну и само собой разумеется что insert и update по ключу item_id.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141317
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftYegor Zhdanov
Код: sql
1.
2.
3.
`pd` int(11) unsigned NOT NULL
...
`pd` int(11) unsigned NOT NULL

Разве можно делать одинаковые поля в одной таблице?
там запятые через раз стоят. это нерабочий скрипт.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141324
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yegor Zhdanovmiksoft,

запоросы поисковые - т.е. 99% в основном select (в запросе возможны выражения типа group by ... HAVING count(*)= ...).
ну и само собой разумеется что insert и update по ключу item_id.Не-не-не. Либо мы обсуждаем конкретный и точный запрос, либо наши теоретизирования имеют нулевую ценность.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141341
Yegor Zhdanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

так а каже мне быть тогда?... подскажите тогда каким образом можно реструктуризировать такую таблицу?
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141345
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yegor Zhdanovтак а каже мне быть тогда?Показывайте точный конкретный запрос.
Yegor Zhdanovподскажите тогда каким образом можно реструктуризировать такую таблицу?Не подскажу. Я не вижу смысла в этой таблице. Как минимум, потому, что не знаю о какой предметной области речь и для чего эта таблица.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141401
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yegor Zhdanov,

судя по наим.полей, вы привели структуру таблицы для "жестких дисков".
У вас под каждый тип товара своя таблица?
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39141619
set_90045
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Индексируй поля которые чаще участвуют в условиях select в разделе where, а так же поля которые участвуют в операторах соединения inner join.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39142259
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftYegor Zhdanovmiksoft,

запоросы поисковые - т.е. 99% в основном select (в запросе возможны выражения типа group by ... HAVING count(*)= ...).
ну и само собой разумеется что insert и update по ключу item_id.Не-не-не. Либо мы обсуждаем конкретный и точный запрос, либо наши теоретизирования имеют нулевую ценность.

абсолютно правильное заявление.

но я хочу сразу сказать, что скорее всего - увы - автор топика не сможет решить сам или с нашей помощью данную задачу - кишка тонка, т. е. уровень понимания проблем на порядки ниже, чем требуется для решения задачи.
А задача очень трудная. Именно потому, что надо оптимизировать заранее неизвестные запросы, что в общем случае невозможно.
...
Рейтинг: 0 / 0
как правильно проиндексировать таблицу
    #39142260
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и прежде всего надо разбираться со структурой данных,кто там на ком стоял.

пока неясно вообще ничего, где ключ например?
почему поля два одинаковых?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как правильно проиндексировать таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]