Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Как правильнее сделать индекс? (Floater) 09/01/2002 - 16:58:19
      Re: Как правильнее сделать индекс? (Андрей) 10/01/2002 - 01:36:59
      Re: Как правильнее сделать индекс? (vitek) 10/01/2002 - 02:55:28
      Re: Как правильнее сделать индекс? (walrus) 10/01/2002 - 09:26:33
      Re: индексы в сортировке (Floater) 10/01/2002 - 20:19:30
      Re: Погорячился с DateDocument (Андрей) 11/01/2002 - 01:29:27
      Re: 2Андрей (Maxim) 11/01/2002 - 22:01:29

> Original message text:
> From: Floater - 09/01/2002 - 16:58:19
> Subject:Как правильнее сделать индекс?
> -----------------
> У меня есть запрос вот такой:
>
> SELECT SUM(DocDetail.Amount) FROM DocDetail,Doc
> WHERE DocDetail.CodeProduct = <значение1> AND
> DocDetail.CodeDocument = Doc.CodeDocument AND
> Doc.CodeDocument > <значение3> AND
> Doc.CodeDebit = <значение2> AND
> (Doc.StatusDocument = 0 OR
> Doc.StatusDocument = 8 OR
> Doc.StatusDocument = 16)
> ORDER BY Doc.DateDocument DESC
>
> Подскажите, плиз, как правильнее написать индекс для таблицы Doc.
>
> У меня есть 2 варианта списка полей, но я не знаю, какой подойдет
>
> 1. CodeDocument, CodeDebit, StatusDocument, DateDocument
> 2. DateDocument, CodeDocument, CodeDebit, StatusDocument
>
>


From: Андрей - 11/01/2002 - 01:29:27
Subject:Погорячился с DateDocument
-----------------
Прошу прощения. MySQL использует индексы при сортировке. Вот, что родная дока пишет:

Indexes are used to:
...
Sort or group a table if the sorting or grouping is done on a leftmost prefix of a usable key (for example, ORDER BY key_part_1,key_part_2 ). The key is read in reverse order if all key parts are followed by DESC. The index can also be used even if the ORDER BY doesn't match the index exactly, as long as all the unused index parts and all the extra are ORDER BY columns are constants in the WHERE clause. The following queries will use the index to resolve the ORDER BY part:

SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3;
SELECT * FROM foo WHERE column=constant ORDER BY column, key_part1;
SELECT * FROM foo WHERE key_part1=const GROUP BY key_part2;

И, видимо, в твоём случае DateDocument надо засовывать в конец индекса. Но с EXPLAIN поэкспериментировать стоит.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
1513



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |