请多多包涵,我对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进行此类操作表。

第二件事,我认为最好对followerfollowing分别使用一个键,因为现在任何类似于WHERE following=X的查询都不会使用索引follower

如果您可以显示SELECTS的示例,也许您会得到更多建议。

10-06 16:16