mysql id>0 and id<3 和 id=1 or id=2 哪个效率高?

mysql id>0 and id<3 和 id=1 or id=2 哪个效率高?

图片说明

上面sql是id是主键时候,下面没有加索引。
第二次:
[SQL]SELECT * FROM db_log WHERE id>0 and id<3;
受影响的行: 0
时间: 0.001s

[SQL]
SELECT * FROM db_log WHERE id=1 or id=2;
受影响的行: 0
时间: 0.001s

[SQL]

SELECT * FROM db_run_log WHERE uid>0 and uid<3;
受影响的行: 0
时间: 0.196s

[SQL]
SELECT * FROM db_run_log WHERE uid=1 or uid=2;
受影响的行: 0
时间: 0.196s

第三次:
[SQL]SELECT * FROM db_log WHERE id>0 and id<3;
受影响的行: 0
时间: 0.001s

[SQL]
SELECT * FROM db_log WHERE id=1 or id=2;
受影响的行: 0
时间: 0.000s

[SQL]

SELECT * FROM db_run_log WHERE uid>0 and uid<3;
受影响的行: 0
时间: 0.195s

[SQL]
SELECT * FROM db_run_log WHERE uid=1 or uid=2;
受影响的行: 0
时间: 0.196s

说明有没有主键索引时候,小范围查询基本都差不多
当我加大范围时候,结果就显而易见了:
[SQL]SELECT * FROM db_log WHERE id>0 and id<10001;
受影响的行: 0
时间: 0.037s

[SQL]
SELECT * FROM db_log WHERE id=1 or id=10000;
受影响的行: 0
时间: 0.001s

[SQL]

SELECT * FROM db_run_log WHERE uid>0 and uid<10001;
受影响的行: 0
时间: 0.282s

[SQL]
SELECT * FROM db_run_log WHERE uid=1 or uid=10000;
受影响的行: 0
时间: 0.200s

没有索引的情况下都慢
有主键索引,后者快
有排序索引,都快

1、这种问题建议你造一些数据执行一下,然后根据时间对比
2、分析sql: https://www.cnblogs.com/clphp/p/5403215.html
3、你这种情况没有索引我不清楚,但是有索引的话id=1 or id=2会高很多,因为> 和 < 可能会不走索引,不走索引的几种情况 https://www.cnblogs.com/xixibaby/p/6409928.html

希望对你有帮助

id=1 or id=2

按照平时的使用来说,第二种会更快

用explain看一下 SQL执行的结果