mysql查询难_MySQL难以查询

不幸的是,经过一些帖子后,这个选择不太好......

今天,桌子上总共有大约900条记录,当我用我的用户ID过滤线程时(只有45个不同的线程!),MySQL需要0.30秒(在开始时,只需要0.04 / 0.05秒...我认为恶化与我订阅的线程数成正比

这可能意味着当我将订阅300个不同的线程时,我应该等待大约2秒钟来进行此查询......这太过分了。

奇怪的是,如果我“限制0,10”这个查询或得到完整的查询,执行速度不会改变!这就是为什么我认为它不好......因为我认为即使我限制它也必须选择整个数据。

没办法解决。这就是我设置查询的方式。有一个新的通知表,因为我想将它用作通知查询(仅显示$ USERID未作出的回复)

通知表字段:id,idcontent,userid

SELECT

CASE WHEN (re.id is NULL) THEN fa.id ELSE re.id END AS id,

fa.id as idtopic,

CASE WHEN (re.userid is NULL) THEN fa.userid ELSE re.userid END AS userid,

CASE WHEN (re.content is NULL) THEN fa.content ELSE re.content END AS content,

n.notify,

u.id as reuserid, u.name, u.surname, u.photo,

CASE WHEN (re.date is NULL) THEN unix_timestamp(fa.date) ELSE unix_timestamp(re.date) END AS LASTUPDATE

FROM notifications AS n

LEFT JOIN post AS fa

ON fa.id = n.idcontent

LEFT JOIN post AS re

ON re.id=(SELECT ID FROM post WHERE IDTOPIC = fa.ID AND userid <> $USERID ORDER BY DATE DESC LIMIT 1)

LEFT JOIN users AS u

ON u.id = ( CASE WHEN (re.userid is NULL) THEN fa.userid ELSE re.userid END )

WHERE

n.userid = $USERID

AND NOT (fa.userid = $USERID AND re.userid = $USERID)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值