mysql查询不同,性能也不同
下面的问题有什么区别? id是主键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是等效的
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是等效的,因此它们应该执行相同的操作。查询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 |
+----+-------+