首页 新闻 会员 周边

针对一个字段,sql如何实现高效的多值查询

0
悬赏园豆:5 [待解决问题]

一开始想到的是用  in( , , , ),但是在查询值较多时,不知道该方法性能如何,请问有更好的多值查询方法吗?

不要问我从哪里来123的主页 不要问我从哪里来123 | 初学一级 | 园豆:6
提问于:2016-11-29 16:03
< >
分享
所有回答(3)
0

这个要看你数据的分部,一般情况下一个正常的数据表(上百万+),in的值分布的相当稀疏而且对应字段上有索引的时候会走index seek,这个效率已经是相当高了。

这里的分界点可以认为是5%,也就是当你in后面的值的数量小于5%的数量都会走index seek。

但具体是怎么走的需要你自己在查询分析器中看下执行计划。

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-29 16:15
0

1、尝试用exists,

2、把in的元素构建一个临时表,然后用连接。

幻天芒 | 园豆:37175 (高人七级) | 2016-11-29 20:58
0

如果你要查询的字段已建过索引,建议使用exists

这样避免了行内搜索。

in是要执行行内搜索的。

牧师/preacher | 园豆:500 (菜鸟二级) | 2017-03-02 13:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册