请问这样的SQL语句还能优化提高查询速度吗?

qq_22264283 2024-11-09 22:09:16

语句比较简单,其中表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)

...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫狸嘎 11-21
  • 打赏
  • 举报
回复

执行计划发出来,可能索引建的并不好,或者统计信息过时。
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')

吉普赛的歌 版主 11-12
  • 打赏
  • 举报
回复

这个sql不算很简单了,600万数据的表,200ms还嫌慢?
还想快,只有两条路:
1、做报表,直接查结果;
2、能用 redis 之类的内存数据库。

  • 举报
回复
@吉普赛的歌 谢谢版主答疑。请问做报表,直接查结果,具体怎么做呢?谢谢!
吉普赛的歌 版主 11-14
  • 举报
回复
@qq_22264283 create table USERID_STUKMID( USERID varchar(20) not null primary key, STUKMID varchar(30) not null ) 创建一个表,把数据插入进去就可以了。但产生变化了,要及时更新这个表。 查询时,直接查这个表就可以了

34,696

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧