已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > 数据库

这个sql总感觉哪里不对


『回复列表(25|显示机器人聊天)』

21.

@echo醉老仙,啥意思。。你 0 楼 和 11 楼,不都排除 password IS NULL 的用户了嘛(即,这些用户不会出现在结果中了)

(/@Ta/2022-09-18 18:01//)

22.

@无名啊,说错了,是只要密码不为空的,is not null

(/@Ta/2022-09-18 18:05//)

23.

@echo醉老仙,你再试试哪个效率高?

SELECT u.id, u.nick, count(uid.user)
  FROM user u
  LEFT JOIN uid ON u.id = uid.user AND uid.state = 0
 WHERE u.password IS NOT NULL
 GROUP BY u.id
SELECT u.id, u.nick, IFNULL(t.cnt, 0)
  FROM (SELECT user, count(*) cnt
          FROM uid
         WHERE state = 0
         GROUP BY user) t
 RIGHT JOIN user u ON u.id = t.user
 WHERE u.password IS NOT NULL
(/@Ta/2022-09-18 18:23//)

24.

@无名啊
第二个最快,有空了我放在tp里试试
image.png(9.36 KB)

11楼的速度
image.png(8.45 KB)

(/@Ta/2022-09-18 18:34//)

25.

@echo醉老仙,你试试 uid 其他的表结构,能不能变快?比如:

(以下SQL建表时,都顺便复制了uid表数据。MySQLSQLite应该都能用)

CREATE TABLE uid2 (user INT, uid INT, state INT, PRIMARY KEY (user, uid)) AS
SELECT user, uid, state
  FROM uid
CREATE TABLE uid3 (state INT, user INT, uid INT, PRIMARY KEY (state, user, uid)) AS
SELECT state, user, uid
  FROM uid
(/@Ta/2022-09-18 19:00//)

26.

@无名啊,已经试用,速度很快,感谢
image.png(14.95 KB)
image.png(13.28 KB)

(/@Ta/2022-09-18 19:45//)

上一页 2/2页,共25楼

回复需要登录

9月10日 18:08 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1