Мне нужно следить за многими элементами и их состояниями во времени.
Пример
ItemId Location DateTime State
1 Mall A 2010-02-03 07:00 on_sale
1 Mall A 2010-02-20 08:22 sold
2 Warehouse 2010-02-02 09:00 on_sale
2 Transit 2010-03-02 16:20 transit
2 Mall B 2010-03-03 10:10 on_sale
2 Mall B 2010-03-12 12:11 sold
Сейчас это огромная таблица, и я использую функцию псевдо-ранга MySQL для выполнениязапросы.
Однако, это очень медленно.Запросы не могут использовать индексы, поскольку для любого конкретного элемента ему нужно будет найти элемент с рангом = 1, прежде чем он сможет выполнить какую-либо фильтрацию.
SELECT
item_sorted.*, IF(@prev <> item_sorted.item_id, @rownum := 1, @rownum := @rownum+1) AS rank,
@prev := item_sorted.item_id
FROM ...
Каков ваш опыт реализации такой функции??Какой дизайн базы данных вы бы порекомендовали?Будет ли база данных, такая как БД с поддержкой Oracle или T-SQL, намного лучше из-за их поддержки многораздельных запросов?
Заранее спасибо за любые идеи!