Мой вопрос касается индексов и первичных ключей.Индексы и первичные ключи
Давайте предположим, что мы имеем таблицу, как это:
demo_table
| id | int(11) | NO | PRI | |
| subject | varchar(255) | YES | | NULL |
| body | text | YES | | NULL |
| to | varchar(255) | YES | MUL | NULL |
| from | varchar(255) | YES | MUL | NULL |
| media | varchar(255) | YES | | NULL |
У меня есть запрос, который ищет последнюю строку конкретного «на» пару/Медиа ":
select * from demo_table where to="" and media="" order by id desc limit 0,1;
и Я хотел бы создать индекс для моей таблицы. Должен ли я создать индекс вроде этого:
CREATE INDEX to_media on demo_table(media,to);
или как это:
CREATE INDEX to_media on demo_table(id,media,to);
видя, что ID сортируется?
Что ваша проблема и каков ваш вопрос? – pltvs
Это таблица MyISAM или InnoDB? В InnoDB PK всегда является первым столбцом в индексе, даже если вы его не указали. – Mchl
Вы должны уклоняться от количества столбцов, допускающих null. Индексирование столбцов VARCHAR (255) не обязательно является хорошей идеей (хотя это не всегда плохая идея). Получите ли вы когда-нибудь 3-компонентный индекс, используемый оптимизатором запросов? Я не уверен, что ты это сделаешь. Вы можете получить 2-компонентный индекс, но я не уверен, что вы будете использовать индекс достаточно, чтобы гарантировать его существование. –