请问这个sql还能怎么优化

select count(1) from
(SELECT a.id
FROM sys_user a LEFT JOIN cy_custinfo c ON a.cust_id = c.custId
INNER JOIN dingding_office do ON a.cust_id = do.cust_id AND a.office_id = do.dingding_id
WHERE a.login_name != '' AND a.system IS NULL AND a.del_flag = '0' )
tmp_count

数据只有几万条,查询却要7、8秒

统计总数,没必要外面套一层查询。
对一些查询的条件字段创建索引。

explain sql

查看索引使用情况

把这3个表的表结构贴出来看看,
尤其是这个cy_custinfo,如果它的custId也是唯一的话,那么根本就没必要再关联这个表了,因为它既没使查询结果增加行数,也没有使用过滤条件来减少数据;
如果它的custId不是唯一,那么你这个sql就有问题了,构造了一个笛卡尔积,数据翻倍。
所以假定是唯一,那么直接把这个表去掉,会发现sql变成了这样

select count(1)
  from sys_user a, dingding_office do
 where a.cust_id = do.cust_id
   AND a.office_id = do.dingding_id
   and a.login_name != ''
   AND a.system IS NULL
   AND a.del_flag = '0'

此时再要提升查询效率就应该从索引上着手了