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 |
我在archdetails
1
指數compname version
和svn3
上revno
4
索引; revno, comp, compname
; comp, compname
;和name, revno, comp, compname
。
上COMPNAME的指標是長度100
查詢仍然需要0.16 sec
執行這是我的目的非常昂貴。我對索引沒有太多經驗,而且上面的索引是用最常用的變量創建的。請告知如何去做索引。
尼斯編輯。你是怎樣做的?。我仍然在學習格式化。 – Gaurav 2010-11-03 22:34:22
在一行的開頭有四個空格將會生成一個代碼塊,或者您可以單擊編輯工具欄中的「010」按鈕。僅供參考明亮的橙色問號框是鏈接到格式化備忘單:http://stackoverflow.com/editing-help堆棧溢出沒有語法突出顯示,但我通過手工清理你的SQL - 你的朋友。 – 2010-11-03 22:37:53
我對mySql的使用經驗並不好。您是否考慮過MS Sql Server Express版本?它是免費的,並允許數據庫大小爲4演出。我切換到SQL Server,發現它要快得多。 – 2010-11-03 22:44:18