У меня есть таблица (записи) с типом, asset_one, asset_two, timestamp, status, и мне нужно получить данные в 3 разных условиях с разными номерами лимитов.
Sth, как это: [
group_A : all records with type A and status = confirmed limit to 10 order by timestamp and set asset_one as first_asset and asset_two as second_asset,
group_B : same as previuse but for where type = B and set asset_one as second_asser and asset_two as first_asset,
unconfirmes : all records with status = unconfirmed and limit to 20 order by timestamp
]
Я пробовал объединение, но разделение данных после выборки имеет одинаковую стоимость времени для запросов на выборку отдельно! Мне нужно получить эти данные как можно быстрее.
Спасибо за ваше внимание. Я с нетерпением жду вашего ответа.
Редактировать:
схема таблицы:
+----+-----------+-----------+------+--------+-----------+
| id | asset_one | asset_two | type | status | timestamp |
+----+-----------+-----------+------+--------+-----------+
пример запроса (группа A):
SELECT
*,
IF
( type = 'A', asset_one, asset_two ) AS first_asset,
IF
( type = 'A', asset_two, asset_one ) AS second_asset
FROM
records
WHERE
(
STATUS = 'confirmed'
AND (
( type = 'A' AND asset_one = 'btc' AND asset_two = 'eth' )
OR
( type = 'B' AND asset_one = 'eth' AND asset_two = 'btc' )
)
)
ORDER BY
timestamp DESC
LIMIT 10
я могу получить свои данные Как я хочу, но в 3 разных запросах, я имею дело с большими данными и многими пользователями, я хочу получить все данные, которые мне нужны, за одно выполнение. и выход должен быть такой:
{
'group_a' : [query a results],
'group_b' : [query b results],
'group_unconfirmed' : [query results for fetching unconfirmed records],
}