3.
@老虎会游泳,请教下有没有优化的可能,没有的话只能用ajax加载了,否则会拖慢网页打开速度
4.
@echo醉老仙,你可以给出两个表的数据示例,以及你查询的目的吗?
5.
@老虎会游泳,第一张表就是用户表,id , nick , passwd 第二张表是数据表,id , uid , user , state
是想查出指定用户的数据数量,state=0的
6.
@echo醉老仙,所以为嘛不能 user(id, nick, passwd, state)
呢?
然后就可以这样了:
SELECT count(*)
FROM user
WHERE state = 0
8.
@echo醉老仙,你给点数据示例吧,还不知道你这些字段干啥的。。
9.
@echo醉老仙,先去掉sum(uid.state=0) as lnums
,然后把现在的sql当成子查询,放到主查询语句的from
后边并as别名i
,最后主查询语句大概是这样的select i.*,sum(i.state=0) as lnums from (上面说的子查询语句)
,你执行看看效率!
11.
@TabKey9,优化后查询时间为0.24s,比较符合预期
select user.id,
user.nick,
sum(i.user=user.id) as lnums
from user,(SELECT user,state from uid where state=0 ) as i
where user.password is not null
GROUP BY user.id
13.
@echo醉老仙,能说说你 uid
数据表里各个字段的作用不?
14.
@无名啊,没什么作用,随意填充都可以,理解成帖子这种数据都行,比如:查询每个用户的已过审的帖子总数
15.
@echo醉老仙,id
, uid
, user
这几个字段是干啥的?
id
:自增序列?
uid
:user_id?
user
:外键,对应 user
表的自增序列?
17.
@echo醉老仙,uid
表的user
字段,是user
表id
的外键嘛?
如果是,这样?
SELECT u.id, u.nick, count(*)
FROM uid
JOIN user u ON u.id = uid.user
WHERE uid.state = 0
AND u.password IS NOT NULL
GROUP BY uid.user
或者,这样?
SELECT u.id, u.nick, t.cnt
FROM (SELECT user, count(*) cnt
FROM uid
WHERE state = 0
GROUP BY user) t
JOIN user u ON u.id = t.user
WHERE u.password IS NOT NULL
你测测哪个速度快些
18.
@无名啊,我需要所有用户的数量,即使uid表中不存在他的数据,因此11楼目前得到的结果是最符合的,但放在tp里就执行就需要2s多
类似这样的结果

19.
@echo醉老仙,user
表中,password IS NULL
的用户,需要出现在结果中吗?