2012-06-08 3 views
2

У меня есть простой таблицы «t1», который содержит:индексы MySQL/заказные данные на основе нескольких критериев

word VARCHAR(16) 
id INT 
importance SMALLINT 

слово и идентификатор являются уникальными вместе, но ни один не является уникальным в одиночку.

Я добавил UNIQUE INDEX(word, id)

Мой запрос выглядит следующим образом:

SELECT id FROM t1 WHERE word = "something" ORDER BY importance DESC 

Но это занимает 0,0002 секунды, чтобы выполнить сказать:

SELECT id FROM t1 WHERE word = "something" 

Но занимает столько же, сколько 0.15s к выполните команду ORDER BY importance DESC.

Мой вопрос в том, как я могу индексировать/переупорядочивать таблицу, чтобы она была организована сначала словом, а затем по важности без необходимости сортировки на лету?

Могу ли я просто изменить порядок статических данных, поэтому он сортируется по word, importance DESC по умолчанию?

ответ

2

Чтобы ускорить ваш запрос, добавьте индекс на (word, importance DESC, id).

У вас может быть более одного индекса на столе, поэтому вам не нужно удалять существующий индекс, если вы этого не хотите.

+0

Я думал об этом, но проблема возникает, когда я заполняю таблицу. Я хочу убедиться, что я не добавляю несколько слов, пар идентификаторов. Как вы думаете? – nick

+0

@nick: Как я уже сказал, вам не нужно удалять свой уникальный индекс. У вас могут быть оба индекса одновременно. –

+0

Разве это не удвоит дисковое пространство? – nick

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