我有一個非常簡單的表,有兩列,但有4.5M行。簡單的MySQL表運行緩慢查詢
CREATE TABLE `content_link` (
`category_id` mediumint(8) unsigned NOT NULL,
`content_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`content_id`,`category_id`),
KEY `content_id` (`content_id`,`category_id`)
) ENGINE=MyISAM;
當我運行像一個簡單的查詢:
SELECT
*
FROM
content_link
WHERE
category_id = '11';
mysql的尖峯CPU和返回約10行之前,需要2-5秒。數據在表中非常均勻地分佈,並且我正在訪問索引字段(我也分析/優化了表,並且我從不更改表的內容),所以查詢需要這麼長時間的原因是什麼?
編輯:看起來navicat對我說謊,我的主鍵實際上沒有以正確的順序鍵入,因爲它正在向我顯示錶。
你是什麼意思通過均勻分佈?結果是否正確?你分析了I/O嗎?有硬件延遲嗎? – Richard 2009-05-29 13:45:39
通過均勻分佈我的意思是我沒有將ID集合在一起,所以mysql BTREE索引應該沒有任何問題。 – Ian 2009-05-29 13:54:34