2列の非常に単純なテーブルがありますが、450万行あります。
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が私に嘘をついているようで、テーブルが表示されていたため、主キーが実際には正しい順序でキー設定されていませんでした。