В чём отличие разных индексов?

Статус
В этой теме нельзя размещать новые ответы.

Tima111

Читатель
Заблокирован
Регистрация
5 Июл 2007
Сообщения
218
Реакции
488
  • Автор темы
  • Заблокирован
  • #1
Подскажите чем отличается индекс по одному полю, например "pole1"
от индексов сразу по 2 полям "pole1", "pole2"?
Т.е. если есть двойной индекс "pole1", "pole2", то индекс по "pole1" можно удалить?
Или это совершенно разные индексы?
Т.е. мне нужно искать по "pole1", а через SELECT выводить оба поля, как лучше сделать?
Читал и в интернете и в книге, но так и не понял :(
 
запросы выполняются быстрее если указать значение первого поля или первого и второго поля из одного индекса полей, а если только для второго поля то индекс уже не используется
 
  • Автор темы
  • Заблокирован
  • #3
Вообщем задача такая:
Нужно из таблицы искать по первому полю но чтобы выводились оба поля... Значит нужен индекс только для "pole1"
НО если сделать по первому полю индекс "pole1", тогда запрос "SELECT pole1, pole2 ...;" очень долго исполняется.
А запрос "SELECT pole1 ...;" быстро исполняется, но нужен доступ и ко второму полю.
Как сделать чтобы запрос "SELECT pole1, pole2 ...;" быстро исполнялся?
 
что после SELECT не важно, главное что после WHERE. Если WHERE pole1...
или
WHERE pole1... AND pole2...
или
WHERE pole1... OR pole2...
тогда будет использоватся индекс двух полей (pole1 и pole2)

А если только WHERE pole2... тогда может создать индекс для pole2

А такой запрос показывает какие индексы будут использованы
EXPLAIN EXTENDED SELECT * FROM test WHERE pole1=1 AND pole2=1;

ещё можно явно указать какие индексы использовать
EXPLAIN EXTENDED SELECT * FROM test USE INDEX (pole1) WHERE pole1=1;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху