J'essaie d'obtenir des identifiants distincts sur une table de 6 millions de lignes. La requête est assez simple, et l'explication semble correcte. La ligne distict est indexée dans le cadre d'un index groupé de uid-date-heure.mysql distinct sur 6 millions de lignes prend 17 minutes pour fonctionner? Puis-je accélérer cela?
La requête est
SELECT DISTINCT uid FROM events;
et renvoie 334117 lignes de 17 min 15,54 secondes.
Explain est
+----+-------------+-------------+-------+---------------+----------------+---- ----+------+------+--------------------------+ | id | select_type | table | type | possible_keys | key | keylen | ref | rows | Extra | +----+-------------+-------------+-------+---------------+----------------+--------+------+------+--------------------------+ | 1 | SIMPLE | events | range | NULL | dateuid_idx | 4 | NULL | 10 | Using index for group-by | +----+-------------+-------------+-------+---------------+----------------+---- ----+------+------+--------------------------+
ce serait plus rapide si l'uid dans un lieu où l'indice séparé? ou existe-t-il un autre moyen d'accélérer cela?
comment cet indice composite est-il défini? Si l'uid n'est pas la première partie, il est inutile – Javier