一开始想到的是用 in( , , , ),但是在查询值较多时,不知道该方法性能如何,请问有更好的多值查询方法吗?
这个要看你数据的分部,一般情况下一个正常的数据表(上百万+),in的值分布的相当稀疏而且对应字段上有索引的时候会走index seek,这个效率已经是相当高了。
这里的分界点可以认为是5%,也就是当你in后面的值的数量小于5%的数量都会走index seek。
但具体是怎么走的需要你自己在查询分析器中看下执行计划。
1、尝试用exists,
2、把in的元素构建一个临时表,然后用连接。
如果你要查询的字段已建过索引,建议使用exists
这样避免了行内搜索。
in是要执行行内搜索的。