2012-01-25 4 views
1

Мой вопрос касается индексов и первичных ключей.Индексы и первичные ключи

Давайте предположим, что мы имеем таблицу, как это:

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 сортируется?

+0

Что ваша проблема и каков ваш вопрос? – pltvs

+1

Это таблица MyISAM или InnoDB? В InnoDB PK всегда является первым столбцом в индексе, даже если вы его не указали. – Mchl

+0

Вы должны уклоняться от количества столбцов, допускающих null. Индексирование столбцов VARCHAR (255) не обязательно является хорошей идеей (хотя это не всегда плохая идея). Получите ли вы когда-нибудь 3-компонентный индекс, используемый оптимизатором запросов? Я не уверен, что ты это сделаешь. Вы можете получить 2-компонентный индекс, но я не уверен, что вы будете использовать индекс достаточно, чтобы гарантировать его существование. –

ответ

0
CREATE INDEX to_media on demo_table(id,media,to); 
+0

это innodb стол. Моя проблема заключается в том, чтобы узнать, существует ли разница между двумя типами индексов, которые я предложил в вопросе. FYI: В моем случае есть как> 100000 строк, которые нужно проверить. –

+0

Его зависит от требования, такого как ... Если его большой масштаб и больше утверждений вставки/обновления идут для Innodb, другие мудрые идут для MYSAM – Madhu

0

Его зависит от требований, как ... Если его крупномасштабным и более Insert заявления/обновления идти Innodb другой мудрый пойти на MYSAM

пожалуйста, обратитесь ссылки на дополнительные разъяснения

http://blogs.innodb.com/wp/2011/07/difference-between-innodb-fts-and-myisam-fts/

http://tapos.wordpress.com/2008/01/10/difference-between-innodb-and-myisam/

Смежные вопросы