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执行的结果