ahoj, potřeboval bych poradit, jak by měly správně vypadat index aby tento sql dotaz byl co nejefektivnější:
SELECT DISTINCT `parentMessageId`
FROM `messages`
WHERE `userId` = 5
ORDER BY `sendTime` DESC
//respektive
SELECT `parentMessageId`
FROM `messages`
WHERE `userId` = 5
GROUP BY `parentMessageId`
ORDER BY `sendTime` DESC
aktualne mi pise explain:
+----+-------------+----------+------+---------------+-----------+---------+-------+------+-------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------+-----------+---------+-------+------+-------------------------------------------+
| 1 | SIMPLE | messages | ref | sentIndex | sentIndex | 4 | const | 4 | Using where; Using index; Using temporary |
+----+-------------+----------+------+---------------+-----------+---------+-------+------+-------------------------------------------+
sentIndex se sklada z userId, sendTime, parentMessageId
a to temporary mi prijde celkem jako problem. Kdyz pouziji drohou verzi s group by, prida se jeste Using sort, coz je snad jeste vetsi hruza. Jak bych to mohl odstranit, nevite? Protoze samozrejme ta tabulka bude obsahovat zaznamy v milionech...
diky za rady