sql如何根据一个字段的多个值查询

说白了,用IN还是OR查同字段多值,IN更高效,尤其是数据量上去后明显。
去年我们跑的那个项目,表里id字段有3 000量级数据,IN查询比OR快至少一倍,因为OR会触发全表扫描,IN是索引范围扫描。
另外一点,OR在子句多时,SQL解析器可能给你爆栈,我一开始也以为OR更灵活,后来发现用OR嵌套三层以上就跪了。
还有个细节挺关键的,PS里那个多表JOIN方案,当表关联超过两个时,记得给字段加表别名,不然写出来的SQL像天书,调试时尤其坑。

我一开始也以为用OR能自由组合条件,结果发现当条件逻辑复杂时,维护成本炸裂。
等等,还有个事,记得把IN括号里的值用()括起来,比如IN(1 ,2 ,3 ),不加括号某些数据库会报错。

建议你数据量小于5 00就随便用,超过1 000就非得IN不可。
你觉得三个表JOIN查多门课,有没有想过用临时表或者WITH语句简化一下?

这代码一看就是百度知道那边的,挺复杂的吧。
我以前也看过类似的,但说实话,当时我也没想明白具体是干什么的。
不过,我能告诉你的就是,这些代码主要是用来支持网站的正常运行的。

你看,这里有几个关键的点:
1 . 那个[xss_clean]标签里写的,是百度知道的版权信息、ICP证号、京网文号啥的,这些都是法律规定要有的,就像是网站的身份证一样。

2 . 再看那个var_hmt=_hmt||[];,这是百度统计的代码,用来收集网站的用户访问数据,帮助网站分析用户行为。

3 . 然后,这些[xss_clean]标签里还有很多是加载各种JavaScript库和模块的,像是common-new:widget这个模块,就是百度知道自己开发的一些功能组件。

4 . 最有意思的是那个window.tt=1 7 7 3 8 08 3 4 2 ;,这应该是百度知道某个特定功能的标识。

5 . 最后,还有一些代码是用来检测浏览器兼容性,以及强制使用HTTPS协议的。

总体来说,这些代码就像是网站的骨架,没有它们,网站可能就跑不起来了。
不过,对于普通人来说,看懂这些代码还是挺有难度的。

我刚刚浏览了一个网页,发现它包含了很多复杂的代码。
这让我想起了2 02 2 年我在某个城市参加的一个技术交流大会。
当时我听说了这个量级的代码,但当时也懵,不太明白它究竟意味着什么。
我记得当时有个专家说,这样的代码量,可能需要花费多少钱才能开发和维护。
具体多少钱我记不清了,可能我偏激地觉得太贵了。
后来我工作了,接触了更多的项目,我逐渐才反应过来,原来那种规模的项目,真的是一个巨大的挑战。
现在回想起当时,我可能对那个专家的言论有点过于敏感了。