34,696
社区成员
发帖
与我相关
我的任务
分享
语句比较简单,其中表kskmstu的数量在600万条左右,TEA 表中的数据在20条左右,相关字段的索引都已经建过了。
现在这条SQL语句,用时大概在200ms左右,不知道能不能再优化提高查询速度?
谢谢!
SELECT DISTINCT TOP 1 STUKMID FROM kskmstu AS A WHERE HASUSER=0
AND EXISTS(SELECT 1 FROM TEA AS B WHERE USERID='3440002' AND A.STTH=B.STTH)
执行计划发出来,可能索引建的并不好,或者统计信息过时。
200ms可能算高,6千万2ms也不是不可能。
把 exists 改写为in 语句。参考exists、in、inner join的区别和效率
SELECT DISTINCT TOP 1 STUKMID FROM kskmstu AS A WHERE HASUSER=0
AND A.STTH in (SELECT B.STTH FROM TEA AS B WHERE USERID='3440002')
这个sql不算很简单了,600万数据的表,200ms还嫌慢?
还想快,只有两条路:
1、做报表,直接查结果;
2、能用 redis 之类的内存数据库。