我正在構建一個MySQL數據庫,其中包含有關酵母物種中DNA的特殊子串的條目。我的表如下所示:對文本字段COUNT和GROUP BY似乎很慢
+--------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| species | text | YES | MUL | NULL | |
| region | text | YES | MUL | NULL | |
| gene | text | YES | MUL | NULL | |
| startPos | int(11) | YES | | NULL | |
| repeatLength | int(11) | YES | | NULL | |
| coreLength | int(11) | YES | | NULL | |
| sequence | text | YES | MUL | NULL | |
+--------------+---------+------+-----+---------+-------+
大概有180萬條記錄。在一個類型的查詢我想看看有多少DNA子與各類型品種和區域相關的,所以我發出這個查詢:
select species, region, count(*) group by species, region;
種類和地區列只有兩個可能的條目(保守/ scer對於物種以及啓動子/區域編碼),但該查詢大約需要30秒。
這是一個正常的時間期望這種類型的查詢給定的表的大小?這是慢的,因爲我使用文本字段而不是簡單的整數或布爾值(我喜歡文本字段,因爲幾個非CS研究人員將使用數據庫)。任何其他想法和建議都會受到歡迎。
請原諒,如果這是一個頭腦問題,我是一名SQL初學者。
P.S.我也看到了this question,但提議的解決方案似乎與我正在做的事情沒有關係。
編輯:將這些字段轉換爲VARCHAR將運行時間減少到約2.5秒。注意我也對它有相似時間的ENUM進行計時。
哪個字段是您的主鍵? – 2010-07-22 02:55:11
我沒有主鍵。我可以人爲製造一個,但它會影響嗎? – Rich 2010-07-22 04:17:32