oracle两个in之间用on还是or

oracle两个in之间用on还是or,第1张

在Oracle数据库中,两个IN之间使用OR,而不是ON。OR表示“或”,意味着查询将返回两个IN子句中的任何一个。例如,如果您有一个表,其中包含一列名为“城市”,您可以使用以下查询来查找城市为“伦敦”或“纽约”的行:SELECT * FROM table WHERE city IN ('London', 'New York') OR city = 'Paris'这将返回城市为“伦敦”、“纽约”或“巴黎”的行。

多数据库服务器都只把IN()看作多个OR的同义词,因为它们在逻辑上是相等的。MYSQL不是这样的,它会对IN()里面的数据进行排序,然后用二分法查找个是否在列表中,这个算法的效率是O(Logn),而等同的OR子句的查找效率是O(n)。在列表很大的时候,OR子句就会变得慢得多。

第一种情况:in和or所在列为主键的情形。

第二种情况:in和or所在列创建有索引的情形。

第二种情况:in和or所在列没有索引的情形。

每种情况又采用不同的in和or的数量进行测试。由于测试语句的数据量有4种情况,我这里就称为A组、B组、C组、D组,其中A组为3个值,B组为150个值,C组为300个值,D组为1000个!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9533183.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存