Question

SELECT t.compname, min(t2.version) FROM archdetails t
INNER JOIN svn3 b ON t.compname = b.compname
INNER JOIN archdetails t2 ON t.compname = t2.compname
WHERE ((b.revno = '270294' OR b.revno = 'r275869' OR b.revno = 'r393316'))
  AND t.version = '1.6'
GROUP BY t.compname`

Tableau archdetails:

Field                    | Type         | Null | Key | Default | Extra  
-------------------------+--------------+------+-----+---------+-------  
name                     | varchar(15)  | NO   |     | NULL    |  
compname                 | varchar(500) | NO   | MUL | NULL    |  
sno                      | int(11)      | NO   |     | NULL    |  
count                    | int(11)      | NO   |     | NULL    |  
fdindex                  | int(11)      | NO   |     | NULL    |  
version                  | varchar(10)  | NO   |     | NULL    |  
sdate                    | date         | NO   |     | NULL    |  
edate                    | date         | NO   |     | NULL    |  
inFlat                   | int(11)      | NO   |     | NULL    |  
inStar                   | int(11)      | NO   |     | NULL    |  
inNostar                 | int(11)      | NO   |     | NULL    |  
inReducedStar            | int(11)      | NO   |     | NULL    |

Tableau svn3:

Field    | Type          | Null | Key | Default | Extra  
---------+---------------+------+-----+---------+------  
name     | varchar(20)   | NO   | MUL | NULL    |  
revno    | varchar(10)   | NO   | MUL | NULL    |  
comp     | varchar(1000) | NO   | MUL | NULL    |  
compname | varchar(1000) | NO   |     | NA      |  

Je index 1 sur compname version des indices archdetails et 4 sur svn3 sur revno; revno, comp, compname; comp, compname; et name, revno, comp, compname.

Les index sur compname est de longueur 100.

La requête prend toujours 0.16 sec pour exécuter ce qui est très cher pour mon but. Je n'ai pas beaucoup d'expérience avec des indices et les indices ci-dessus ont été créés avec des variables les plus souvent utilisées. S'il vous plaît des conseils sur la façon d'aller sur les index.

Était-ce utile?

La solution

Une réponse rapide. Inclure les champs qui sont dans votre clause where

Dans votre cas, pensez à l'indexation svn3.revno et archdetails.version. Ensuite, regardez les colonnes de jointure. Index archdetails.compname est à considérer aussi.

Bien sûr, vous ne voulez pas ajouter trop d'index. Ils font vos insertions et suppressions plus lentes, et de rendre votre DB prendre plus d'espace.

Autres conseils

Essayer cette

SELECT DISTINCT
t.compname,
t.version
FROM archdetails t
INNER JOIN svn3 b 
        ON t.compname 
         = b.compname 
WHERE b.revno in ('270294','r275869','r393316')
AND t.version = '1.6'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top