Оптимальный индекс

Screjet

Новичок
Оптимальный индекс

Люди, подскажите!
Не могу построить для Мускла нормальный индекс.
есть >4 полей, приведу индексные:

id,Enable,UserID,AccountID,OrderID

index(id) - проблем нет,

выборка может быть по:
UserID and Enable
AccountID and Enable
OrderID and Enable

Так вот максимум, что решил - 3 многостолбовых индекса:
index(UserID,Enable)
index(AccountID,Enable)
index(OrderID,Enable)
так вот и начинающему ясно, что такой индекс будет занимать места поболее, чем данные

известно, что такое работать не будет:
index(id,Enable,UserID,AccountID,OrderID)
а такое будет тормозить:
index(id),index(Enable),...

есть решение этой проблеме?
 

ForJest

- свежая кровь
index(id, Enable,UserID,AccountID,OrderID)
по-моему аналогичен
index(id), index(id, Enable),index(id,Enable,UserID), index(id,Enable,UserID,AccountID), index(id,Enable,UserID,AccountID,OrderID);
Так что придется тебе строить твои 3 многостолбовых индекса и один по id.
хотя попробуй
index(id), index(Enable,UserID,AccountID,OrderID);
 

Апельсин

Оранжевое создание
Screjet, проанализируй все свои запросы и уже исходя из того какие поля и в каких комбинацияъ используются в WHERE и строй индексы.
 

Screjet

Новичок
Re: Оптимальный индекс

Автор оригинала: Screjet
а такое будет тормозить:
index(id),index(Enable),...
вобщем провел я испытытания по индексам, вся паранойя шла из очень древнего Мускла (еще когда только ISAM был) так там обратотка в запросе
PHP:
select * from ab where a=.. and b=..
, когда индекс был::
index(a);
index(b);
результат был просто катострофический (3млн записей/п3.500) - несколько минут времени выполнялся..
а с многостолбцовым индексом - все ок.
Сейчас ситуация куда лучше: разница по скорости многостолбцового индекса от раздельных всего то в 60%
(исп. мускл4.0.12, 100к.зап/id+3xVARCHAR(20)/к2.500 по 1к запросов в цикле min/avg/max 1.5/1.8/2.5 sec)
 
Сверху