❶ between and与in和and与or哪种效率要高
between and效率应该比in高些,建议使用exists
and和or感觉没有和段可比性
而且一条sql语汪嫌句的高低在oracle下还是要看很多方面的
比如:
1.oracle版本
2.optimizer_mode
3.统计信息
4.index
5.数据分布
6.where条件
7.shared pool size
8.database buffer cache
9.table和index的情况.比如table的hwm
等等
最好能有比较具唤陵誉体的SQL拿出来
❷ oracle在做查询的时候,使用 where 条件过滤 是 or 的效率高 还是 in 的效率高
这两个效率都拦答不高。一般in (select)这者做样的语句可以用简嫌慧exists代替,效率要高很多。
如果比较or和in,要看你语句的具体情况了。
❸ mysql的in与or哪个效率更好
第一种情况:in和or所在列为亩袜主键的情形。
第二种情况:in和笑型or所在列创建有索引的情形。
第二种情况:in和or所在列没有索引的情形。
每种情况又采用不同的in和or的数量进行测试。由于测试语句的数据量有4种情况,我这里就称为A组、B组、C组、D组,其中碰耐猜A组为3个值,B组为150个值,C组为300个值,D组为1000个!
❹ sql语句中条件查询里in、like、及=三个的效率怎么样
1、如果条件字段都是非索引字段,那么效率都差不多,就看结果大小。
2、有差别专的在于条属件字段是索引字段时:
=在所以的情况下都会进行索引扫描,所以效率总是高的。
like 当模糊查询为右模糊,比如'abc%'时,扫描索引,高效。
当模糊查询含左模糊时,比如'%abc',进行全表扫描,低效。
in的作用等同于or ,也是进行索引扫描,高效。
另外,in还可以连接查询结果集,这时往往会和exists做比较。
a、 select * from t1 where f1 in (select f1 from t2 where t2.fx='x'),
其中子查询的where里的条件不受外层查询的影响,这类查询一般情况下,自动优化会转成exist语句,也就是效率和exist一样。
b、 select * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx),
其中子查询的where里的条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情况和数据量多少,一般效率不如exists,数据量大时,效果就更加明显。
❺ MySql or和in的区别
网上有很多人都在谈论or与in的使用,有的说二者没有什么区别,其实不然,估计是测试做的不够,其实or的效率为O(n),而in的效率为O(log2n),当基数越大时,in的效率就能凸显出来了。
有人做了这么一组实验(测试库数据为1000万条记录):A组分别用or与in查凳罩询3条记录,B组分别用or与in查询120条记录,C组分别用or与in查询500条记录,D组分别用or与in查询1000条记录.
第一种情况,目标列为主键的情况,4组测试执行计划一样,执行的时间也基本没有区别。
A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s
B组or和in的执行枣销闹时间: or的执行时间为:0.004s in的执行时间为:0.004s
C组or和in的执行时间: or的执行时间为:0.006s in的执行时间为:0.005s
D组or和in的执行时间: or的执行时间为:0.017s in的执行时间为:0.014s
第二种情况,目标列为一般索引的情况,4组测试执行计划一样,执行的时间也基本没有区别。
A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s
B组or和in的执行时间: or的执行时斗毕间为:0.006s in的执行时间为:0.005s
C组or和in的执行时间: or的执行时间为:0.008s in的执行时间为:0.008s
D组or和in的执行时间: or的执行时间为:0.020s in的执行时间为:0.019s
第三种情况,目标列没有索引的情况,4组测试执行计划就不一样,执行的时间也有了很大的区别。
A组or和in的执行时间: or的执行时间为:5.016s in的执行时间为:5.071s
B组or和in的执行时间: or的执行时间为:1min 02s in的执行时间为:5.018s
C组or和in的执行时间: or的执行时间为:1min 50s in的执行时间为:5.010s
D组or和in的执行时间: or的执行时间为:6min 13s in的执行时间为:5.047s
结论:
in和or的效率,取决目标条件列是否有索引或者是否是主键,如果有索引或者主键性能没啥差别,如果没有索引,in的性能要远远优于or.
❻ sql中:pp.dealtype in ('1','2') 和 pp.dealtype ='1' or pp.dealtype ='2' 查询速度哪个快为什么
后者效率高;
后者是直接进行樱陪筛选;
前段颂蔽者是进行遍历再帅选;
数据量少的话差不多啦握州
❼ SQL中,in与or作用相当,我就弄不明白,不就是字母不同吗咋就in牛逼点,字母这东西还不是唯心
使用场景不太一样。
(1)知帆or 可能是多个字段的姿乎 或条件,例如 找一个学生 班级是一班 或者 学习会计专业的也行。
class ='1班' or major='会计'
(2)in 一般是 一个字段多值的情况,例如 找一个学生 班级是一班 或者 二班,或者三班
class in ('1班','2班','3班')
PS:还有就是当结果非常多事你不可能都写出来,in可以使用在别的查询迹猛悉条件中,例如找一个参加了数学考试的学生信息。
select * from students where Sno in (select Sno from Exam where class='数学')
❽ oracle sql 优化 in or 哪个效率高
执行的效率是一样的。
两极化的plan hash value一模一样闷亏神灶,说明蚂瞎神他们内部执行是一模一样的
❾ mysql in数组查询效率怎样 - 技术问答
不怎么样,一样会扫表。特别是in中有子查询的,更不可取。
❿ SQL语句中 in和or的区别
SQL语句中 in和or的区别为:操作不同、适合不同、执行效率不同。
一、操作不同
1、in:in是把父查询表和子查询表作hash连接。
2、or:or是对父查询表作loop循环,每次loop循环再对子查询表进行查询。
二、适合不同
1、in:in适合用于子查询表数据比父查询表数据多的情况。
2、or:or适合用于子查询表数据比父查询表数据少的情况。
三、执行效率不同
1、in:在没有索引的情况下,随着in后面的数据量越多,in的执行效率不会有太大的下降。
2、or:在没有索引的情况下,随着or后面的数据量越多,or的执行效率会有明显的下降。