sql语句执行性能分析

发布于 2022-09-03 08:50:28 字数 273 浏览 15 评论 0

问题一:
1.有什么可视化的,能够特别直观的分析SQL语句性能的工具?

问题二:

select *  limit offset,amount;
select *  where id between offset and offset+amount;
select *  where id > offset limit amount;

以上三个SQL语句,哪个性能更佳呢?项目中我们一般用的好像是limit a b 这样的吧,性能又如何呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

戏舞 2022-09-10 08:50:28
  1. explain

  2. 根据上面提到的explain去比较,就可以得出结果了

mysql> explain select * from users  limit 1000,20;
+----+-------------+-------+------+---------------+------+---------+------+--------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows   | Extra |
+----+-------------+-------+------+---------------+------+---------+------+--------+-------+
|  1 | SIMPLE      | users | ALL  | NULL          | NULL | NULL    | NULL | 169847 |       |
+----+-------------+-------+------+---------------+------+---------+------+--------+-------+
1 row in set (0.00 sec)
mysql> explain select * from users where uid>1000  limit 20;
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref  | rows  | Extra       |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+
|  1 | SIMPLE      | users | range | PRIMARY       | PRIMARY | 4       | NULL | 84923 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+
1 row in set (0.00 sec)
mysql> explain select * from users where uid  between 1000 and 1020;
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref  | rows | Extra       |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
|  1 | SIMPLE      | users | range | PRIMARY       | PRIMARY | 4       | NULL |    1 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
1 row in set (0.00 sec)
泪痕残 2022-09-10 08:50:28

explain +1
还有,你这3条SQL表达的都不是一个意思,所以无可比性。

参考:https://mp.weixin.qq.com/s?__...

睡美人的小仙女 2022-09-10 08:50:28

select * limit offset,amount;
select * where id between offset and offset+amount;
select * where id > offset limit amount; 这条性能最佳
为何?因为id比较走了索引,如果id没有索引,还可以加索引,请记住,select判断性能佳不佳 首先去看下自己的where条件有没有可能走索引,如果自己的几种方案都走了索引,那么再用explain去具体看下到底哪些语句性能最佳

风情万种。 2022-09-10 08:50:28

后两个要优于第一个

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文