mysql查询不同,性能也不同

mysql查询不同,性能也不同,mysql,sql,Mysql,Sql,下面的问题有什么区别? id是主键 1, select id from tbl_xxx WHERE 2708 <= id <= 1562755185; 2, select id from tbl_xxx WHERE id> = 2708 and id <= 1562755185; 3, select id from tbl_xxx WHERE id between 2708 and 1562755185; 1,从tbl_xxx中选择id,其中2708个查询2和3是等效的

下面的问题有什么区别? id是主键

1, select id from tbl_xxx WHERE 2708 <= id <= 1562755185;
2, select id from tbl_xxx WHERE id> = 2708 and id <= 1562755185;
3, select id from tbl_xxx WHERE id between 2708 and 1562755185;

1,从tbl_xxx中选择id,其中2708个查询23是等效的,因此它们应该执行相同的操作。查询1完全不同;查询1相当于:

select id from tbl_xxx WHERE (2708 <= id) <= 1562755185;
当然,假设
id
从不为空

因此,查询是完全不同的,没有理由期望它们执行相同的操作

例如,我有一张桌子,看起来像这样:

mysql> select * from stars;
+----+-------+
| id | stars |
+----+-------+
|  1 |     1 |
|  2 |     2 |
|  3 |     3 |
|  4 |     2 |
|  5 |     1 |
|  6 |     1 |
|  7 |     1 |
|  8 |     2 |
|  9 |     1 |
+----+-------+
介于
之间的
执行以下操作:

mysql> select * from stars where id between 3 and 5;
+----+-------+
| id | stars |
+----+-------+
|  3 |     3 |
|  4 |     2 |
|  5 |     1 |
+----+-------+
mysql> select * from stars where 3 <= id <= 5;
+----+-------+
| id | stars |
+----+-------+
|  1 |     1 |
|  2 |     2 |
|  3 |     3 |
|  4 |     2 |
|  5 |     1 |
|  6 |     1 |
|  7 |     1 |
|  8 |     2 |
|  9 |     1 |
+----+-------+

但是你的
a你是如何衡量绩效的?你的结果是什么?数据库将在内部执行一些缓存,因此如果背靠背运行相同或类似的查询,第二个查询将处于优势,因为它可能会命中缓存。explain select id from tblData,其中id>=2708,id explain select id from tblData,其中2708
mysql> select * from stars where id between 3 and 5;
+----+-------+
| id | stars |
+----+-------+
|  3 |     3 |
|  4 |     2 |
|  5 |     1 |
+----+-------+
mysql> select * from stars where 3 <= id <= 5;
+----+-------+
| id | stars |
+----+-------+
|  1 |     1 |
|  2 |     2 |
|  3 |     3 |
|  4 |     2 |
|  5 |     1 |
|  6 |     1 |
|  7 |     1 |
|  8 |     2 |
|  9 |     1 |
+----+-------+