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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE IF NOT EXISTS `GraphicsImages` (
  `GraphicsImagesID` int(11) NOT NULL AUTO_INCREMENT,
  `ExtTable` enum('GoodsGen','GoodsEntGen','GoodsGroups','Vendors','VendorsCountries') NOT NULL COMMENT 'Таблица, которой принадлежит изображение',
  `ExtTableID` int(11) DEFAULT NULL COMMENT 'ID элемента в таблице',
  `DefaultImage` tinyint(1) NOT NULL COMMENT 'Основное изображение, если > 0',
  `GraphicsImagesTypesID` tinyint(4) NOT NULL COMMENT 'Идентрификатор типа изображения',
  `Description` text NOT NULL COMMENT 'Описание изображения',
  `Image` varchar(255) NOT NULL COMMENT 'Путь к изображению',
  `ImageFormat` enum('','jpeg','png','gif') NOT NULL COMMENT 'Формат изображения',
  `Width` smallint(5) unsigned DEFAULT NULL COMMENT 'Ширина изображения (пикселей)',
  `Height` smallint(5) unsigned DEFAULT NULL COMMENT 'Высота изображения (пикселей)',
  PRIMARY KEY (`GraphicsImagesID`),
  KEY `ExtTableID` (`ExtTableID`)
) ENGINE=MyISAM;



В ExtTable содержится название таблицы, к которой относится изображение, а в ExtTableID - ID первичного ключа в указанной таблице.

С учетом того, что ExtTable это ENUM с 5 значениями, стоит ли делать составной индекс на 2 колонки ExtTable, ExtTableID или это бессмысленно и эффективнее будет работать индекс по одной колонке ExtTableID?
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39242947
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Int_20h,

зависит от ваших запрос
сам по себе enum не ограничивает использование составного индекса
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39242966
Int_20h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
retvizan,

Запрос всегда будет вида select * from GraphicsImages where ExtTable = ? and ExtTableID = ?.

Вопрос не в том, ограничивает ли ENUM использование индекса, а в том, насколько этот индекс будет эффективным. Селективность у первой колонки - максимум 5. Я знаю, что в случае с простыми индексами индексирование с подобной селективностью - бесполезно, а иногда и вредно. Хочу понять, как в данном случае стоит поступать.
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39242979
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Int_20hСелективность у первой колонки - максимум 5. Я знаю, что в случае с простыми индексами индексирование с подобной селективностью - бесполезно, а иногда и вредно. Хочу понять, как в данном случае стоит поступать.Селективность - понятие, существующее только для используемой части (всего выражения или используемого в конкретном запросе префикса) индекса в целом, но никак не для префикса используемой части. Поскольку для показанного запроса будет использоваться весь индекс, а не его префикс по полю ExtTable, то для этого запроса селективность индекса вовсе даже не 5.
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243015
Int_20h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

т.е. имеет смысл делать составной индекс в данном случае?
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243023
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Int_20hСелективность у первой колонки - максимум 5.вы неправильно понимаете термин селективность

Int_20hЯ знаю, что в случае с простыми индексами индексирование с подобной селективностью - бесполезно, а иногда и вредно.бывает и наоборот

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

Покажите результат этого запроса:
Код: sql
1.
2.
SELECT COUNT(*), COUNT(DISTINCT ExtTableID), COUNT(DISTINCT ExtTableID, ExtTable)
FROM GraphicsImages
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243048
Int_20h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
retvizanвы неправильно понимаете термин селективность

Да, я уже понял, что к составляющей индекса его применять не корректно.
Разберусь в итоге. По запросу "селективность mysql" ничего толкового не ищется, еще "mysql cardinality" посмотрю.


Int_20hт.е. имеет смысл делать составной индекс в данном случае?да[/quot]

Спасибо.

Еще такой вопрос, какой порядок столбцов в данном случае лучше указать?
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243074
Int_20h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

COUNT(*)COUNT(DISTINCT ExtTableID)COUNT(DISTINCT ExtTableID ExtTable)453221984396

Пока так. В дальнейшем количество строк будет расти примерно в таких же пропорциях.

Есть еще таблица с подобной структурой. В ней показатели следующие:

COUNT(*)COUNT(DISTINCT ExtTableID) COUNT(DISTINCT ExtTableID ExtTable) 576913791608
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243113
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Int_20hкакой порядок столбцов в данном случае лучше указать?Для конкретно этого запроса - пофиг.
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243207
Int_20h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

спасибо.
...
Рейтинг: 0 / 0
Простой или составной индекс
    #39243383
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Int_20hmiksoft,

COUNT(*)COUNT(DISTINCT ExtTableID)COUNT(DISTINCT ExtTableID ExtTable)453221984396

Пока так. В дальнейшем количество строк будет расти примерно в таких же пропорциях.

Есть еще таблица с подобной структурой. В ней показатели следующие:

COUNT(*)COUNT(DISTINCT ExtTableID) COUNT(DISTINCT ExtTableID ExtTable) 576913791608Для этого случая вполне достаточно индекса по одному полю ExtTableID.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Простой или составной индекс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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