sql distinct的查询如何提高效率

select COUNT(distinct a.oid) count from member a where  a.tid = '2001' AND a.type = 0  AND a.delete_at is null

执行是2.7s 库里有25w数据

select COUNT(a.id) count from member a where  a.tid = '2001' AND a.type = 0  AND a.delete_at is null

执行是0.7s
阅读 3.3k
2 个回答
SELECT
    count(1 ) 
FROM
    ( SELECT DISTINCT a.oid FROM member a WHERE a.tid = '2001' AND a.type = 0 AND a.`delete_at` IS NULL  ) tmp;

最终解决的还是子查询的慢 还是没有解决

image.png

试试

SELECT COUNT(*) `count` FROM (
    SELECT DISTINCT `a`.`oid` FROM `member` `a` WHERE `a`.`tid` = '2001' AND `a`.`type` = 0 AND `a`.`delete_at` IS NULL
) `tmp`

另外记得给 oid 加个索引、给 tid, type 加个联合索引。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题