请多多包涵,我对MySQL编码不是很自信。
我正在运行一个类似于twitter的网站。但是,用户获得的关注者越多,该站点在该特定用户配置文件上运行的速度就越慢。
追随者很少的用户的页面加载速度相当快。
以下是MySQL的“后续”部分,你们中的任何人都可以看到代码问题或了解发生这种情况的原因吗?
提前致谢。
码:
CREATE TABLE IF NOT EXISTS `followers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`follower` int(11) unsigned NOT NULL,
`following` int(10) unsigned NOT NULL,
`status` enum('0','1') CHARACTER SET utf8 NOT NULL DEFAULT '1' COMMENT '0 Trash, 1 Active',
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `follower` (`follower`,`following`,`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
最佳答案
首先,为什么要对不断更新的表使用MyISAM引擎,因为MyISAM使用表级锁,这会减慢您的应用程序的速度,这意味着select必须等待插入完成才能运行,请始终使用InnoDB进行此类操作表。
第二件事,我认为最好对follower
和following
分别使用一个键,因为现在任何类似于WHERE following=X
的查询都不会使用索引follower
如果您可以显示SELECTS
的示例,也许您会得到更多建议。