Ian*_*Ian 3 mysql sql performance myisam
我有一个非常简单的表,有两列,但有4.5M行.
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;
Run Code Online (Sandbox Code Playgroud)
当我运行一个简单的查询,如:
SELECT
*
FROM
content_link
WHERE
category_id = '11';
Run Code Online (Sandbox Code Playgroud)
mysql激活CPU并在返回大约10行之前需要2-5秒.数据在表中非常均匀地传播,我正在访问索引字段(我还分析/优化了表,我从不更改表的内容),那么查询需要这么长时间的原因是什么?
编辑:似乎navicat对我撒谎,我的主键实际上没有按正确的顺序键入,因为它正在向我显示表格.
category_id 不是任何索引中的第一列.
重新创建您的辅助密钥,如下所示:
UNIQUE KEY `ix_category_id` (`category_id`, `content_id`)
Run Code Online (Sandbox Code Playgroud)
注意列顺序,这很重要.
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |