У меня есть две таблицы - одна называется customer_records
, а другая - customer_actions
.Эффективность запросов (несколько выборок)
customer_records
имеет следующую схему:
CustomerID (auto increment, primary key)
CustomerName
...etc...
customer_actions
имеет следующую схему:
ActionID (auto increment, primary key)
CustomerID (relates to customer_records)
ActionType
ActionTime (UNIX time stamp that the entry was made)
Note (TEXT type)
Каждый раз, когда пользователь выполняет действия по записи клиента, запись сделана в customer_actions
, и пользователю предоставляется возможность ввести заметку. ActionType
может быть одним из нескольких значений (например, «условное обновление» или «дополнительная информация о событии» - может быть только одним из списка опций).
Что я хочу сделать, это отобразить список записей от customer_records
, где последнее значение ActionType
было определенным значением.
До сих пор я искал сеть/SO и придумать с этим монстром:
SELECT * FROM (
SELECT * FROM (
SELECT * FROM `customer_actions` ORDER BY `EntryID` DESC
) list1 GROUP BY `CustomerID`
) list2 WHERE `ActionType`='whatever' LIMIT 0,30
который является большим - это перечисляет каждый идентификатор клиента и их последнее действие. Но запрос чрезвычайно медленный на случаи (примечание: есть около 20 000 записей в customer_records
). Может ли кто-нибудь предложить какие-либо советы о том, как я могу сортировать этого монстра запроса или настроить мой стол, чтобы дать более быстрые результаты? Я использую MySQL. Любая помощь действительно ценится, спасибо.
Редактировать: Чтобы быть ясным, мне нужно увидеть список клиентов, последнее действие которого было «что угодно».
Означает ли это, что, если последнее действие (по ActionDate) клиента не является «не», «то», то этот клиент не должен быть указан? И для клиентов, которые * указаны *, вы просто хотите, чтобы клиент, а также их последнее действие, а также все их действия? – MatBailie
@ Dems Если последний «ActionType» для клиента не «все равно», то они не должны отображаться. Для тех, у кого есть последний «ActionType» из «любой», мне понадобится их информация из 'customer_records', но это не обязательно нужно рассматривать в одном запросе. – Jonathon