MySQL使用join时查询计数非常慢
我有一个MySQL查询,它有将近500k的数据MySQL使用join时查询计数非常慢,mysql,sql,Mysql,Sql,我有一个MySQL查询,它有将近500k的数据 SELECT COUNT(*) AS Toplam FROM userpersonel p INNER JOIN usermessagecontent m ON p.ID = m.MeID WHERE p.VIP = 0 AND p.BotStatus = 0 AND m.End = 0 我正在本地数据库上试用它,大约2分钟后它就会进行查询 如何减少时间?对于此查询: SELECT C
SELECT COUNT(*) AS Toplam
FROM userpersonel p
INNER JOIN usermessagecontent m ON p.ID = m.MeID
WHERE p.VIP = 0
AND p.BotStatus = 0
AND m.End = 0
我正在本地数据库上试用它,大约2分钟后它就会进行查询
如何减少时间?对于此查询:
SELECT COUNT(*) AS Toplam
FROM userpersonel p INNER JOIN
usermessagecontent m
ON p.ID = m.MeID
WHERE p.VIP = 0 AND p.BotStatus = 0 AND m.End = 0;
您有两种索引策略,这取决于WHERE
子句过滤器的限制性更强
一是:
userpersonel(VIP、BotStatus、Id)
usermessagecontent(Meid,end)
userpersonel(id、VIP、BotStatus)
usermessagecontent(end,Meid)
m.MeID
具有与其关联的索引。您还可以使用EXPLAIN SELECT..
运行查询,查看MySQL做了什么,使用了哪些索引。。在一个相对较小的数据集上,使用这样的基本选择进行简单的连接应该几乎是即时的;请编辑您的问题以添加show create table userpersonel的(作为文本)输出
和显示创建表usermessagecontent代码>和解释选择COUNT(*)作为Toplam,从userpersonel p内部连接usermessagecontent m到p.ID=m.MeID,其中p.VIP=0,p.BotStatus=0,m.End=0
你能给我一个查询示例吗?@ardalegent这个查询就是你的查询;Gordon正在告诉你,对于这一点,哪些索引必须是最佳的query@ysth我不知道你这是什么意思。我想举个例子,说明我该如何做。@ardalegent<代码>创建索引代码>。