Comment améliorer la vitesse de regroupement
<p>J'ai une grande table avec plus de 3 milliards de lignes et l'exécution de ma requête prend désormais 3 jours. </p>
<p>Voici ma requête : </p>
<pre class="brush:php;toolbar:false;">insérer dans les mots de fréquence (mot, fréquence, nom de fichier)
sélectionnez le mot, comptez (*) comme fréquence, max (nom de fichier)
de tous les motstemp
regrouper par mot</pre>
<p>Fondamentalement, ma requête consiste à regrouper par mot à partir de la table allwordstemp, et je veux connaître le <strong>filename</strong> lorsque la fréquence = 1, c'est pourquoi j'ai ajouté max(filename), car le nom de fichier doit être inclus dans la fonction d'agrégation, comme max. Si fréquence > 1, je n'ai pas non plus besoin de la valeur du nom de fichier.
Les deux tables ont 2 index sur le mot et le nom de fichier. </p>
<p>table allwordstemp (le nom de fichier est un fichier d'identification) : </p>
<pre class="brush:php;toolbar:false;">CREATE TABLE `allwordstemp` (
`mot` varchar(45) NULL PAR DÉFAUT,
`nom de fichier` int(11) NULL PAR DÉFAUT,
CLÉ `idx_allwordstemp_word` (`mot`),
CLÉ `idx_allwordstemp_filename` (`filename`)
) MOTEUR=InnoDB DEFAULT CHARSET=utf8;</pre>
<p>tableau de mots de fréquence :</p>
<pre class="brush:php;toolbar:false;">CREATE TABLE `fréquencemots` (
`mot` varchar(45) NULL PAR DÉFAUT,
`fréquence` int(11) NULL PAR DÉFAUT,
`nom de fichier` int(11) NULL PAR DÉFAUT,
CLÉ `idx_ Frequencywords_word` (`mot`),
CLÉ `idx_fréquencewords_fréquence` (`fréquence`),
CLÉ `idx_ Frequencywords_filename` (`filename`)
) MOTEUR=InnoDB DEFAULT CHARSET=utf8;</pre>
<p>Expliquer la sélection :</p>
<pre class="brush:php;toolbar:false;">+----+-------------+------------- -+----------------+-------+---------------+------- ---- ------------+---------+------+------------+--- ---- ---+-------------+
| id | select_type table | partitions | clé_possible | lignes |
+---------+--------+--------------+--------------- -+-- -----+---------------+----------------+-- -- -----+------+------------+--------------+--------------- -- +
| 1 | SIMPLE | allwordstemp | NULL | idx_allwordstemp_word |
+---------+--------+--------------+--------------- -+-- -----+---------------+----------------+-- -- -----+------+------------+--------------+--------------- -- +</pré>
<p>Comment puis-je accélérer ma requête ? </p>