0
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`

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    |

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      |  

1インデックスがありcompname version、にインデックスがarchdetailsあり ます。; ; と。4svn3revnorevno, comp, compnamecomp, compnamename, revno, comp, compname

compname のインデックスの長さは 100 です。

クエリの0.16 sec実行にはまだ時間がかかりますが、これは私の目的には非常に高価です。私はインデックスの経験があまりなく、上記のインデックスは最も頻繁に使用される変数で作成されています。インデックスの進め方について教えてください。

4

2 に答える 2

0

簡単な答え:where句にあるフィールドを含めます。

あなたの場合、svn3.revnoとarchdetails.versionのインデックスを作成することを検討してください。次に、結合の列を確認します。インデックスarchdetails.compnameも考慮すべきものです。

もちろん、あまり多くのインデックスを追加したくはありません。これらにより、挿入と削除が遅くなり、DBがより多くのスペースを占有するようになります。

于 2010-11-03T22:41:21.140 に答える
0

これを試して

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'
于 2010-11-06T02:01:02.483 に答える