用户1有post id:2,5,7,9
用户2有帖子ids:600000, 600020, 600025, 600033
我的桌柱有600050行。
这就是问题所在,如果我想从用户1中选择帖子,需要15秒以上的时间;如果我想从用户2中选择帖子,则需要00005秒。
我注意到,拥有更多最新帖子的用户加载速度会更快。
用户1:
select c.nome from posts p
join cadastro c on p.user=c.id
where (p.user in (1)) and p.delete='0'
//p.user in 1 - if I place to 2 it will get results much faster
group by p.id
order by p.id desc limit ?
我想从这两方面更快地得到结果。不仅仅是用户2。有什么想法吗?
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user` int(11) UNSIGNED NOT NULL,
`titulo` text,
`data` datetime NOT NULL,
`ip` varchar(20),
`delete` tinyint(1) NOT NULL DEFAULT '0'
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
我尝试在用户上添加索引,但没有任何更改。
1条答案
按热度按时间vc9ivgsu1#
你没有索引
user
,所以每次都要做一次表扫描才能找到帖子。这是资本b坏,将削弱表现。用以下方法修复:然后你可以和
EXPLAIN
以确保它正确应用于您的查询。请注意,尽量避免使用mysql保留关键字,如
DELETE
作为列名。类似的“删除”也同样有效。