两条SQL语句比较,哪个好点

剑心永远OK 2012-04-01 05:10:30
explain 出来的结果。。

+----+-------------+-------+--------+---------------+------------+---------+--------------------------------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------+------------+---------+--------------------------------------+------+--------------------------+
| 1 | SIMPLE | pd | range | PRIMARY | PRIMARY | 8 | NULL | 168 | Using where; Using index |
| 1 | SIMPLE | p | eq_ref | PRIMARY | PRIMARY | 4 | kleehaus_wedding.pd.product_id | 1 | Using where |
| 1 | SIMPLE | p2s | eq_ref | PRIMARY | PRIMARY | 8 | kleehaus_wedding.pd.product_id,const | 1 | Using where; Using index |
| 1 | SIMPLE | ps | ref | product_id | product_id | 4 | kleehaus_wedding.p.product_id | 1 | Using index |
+----+-------------+-------+--------+---------------+------------+---------+--------------------------------------+------+--------------------------+



+----+-------------+-------+--------+---------------------+-------------+---------+---------------------------------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------------+-------------+---------+---------------------------------------+------+--------------------------+
| 1 | SIMPLE | p2c | ref | PRIMARY,category_id | category_id | 4 | const | 436 | Using where |
| 1 | SIMPLE | pd | eq_ref | PRIMARY | PRIMARY | 8 | kleehaus_wedding.p2c.product_id,const | 1 | Using where; Using index |
| 1 | SIMPLE | p | eq_ref | PRIMARY | PRIMARY | 4 | kleehaus_wedding.p2c.product_id | 1 | Using where |
| 1 | SIMPLE | ps | ref | product_id | product_id | 4 | kleehaus_wedding.p.product_id | 1 | Using index |
| 1 | SIMPLE | p2s | eq_ref | PRIMARY | PRIMARY | 8 | kleehaus_wedding.pd.product_id,const | 1 | Using where; Using index |
+----+-------------+-------+--------+---------------------+-------------+---------+---------------------------------------+------+--------------------------+


第一个SQL,TYPE为range,扫描的行数只有168,运行的速度为:0.02sec
第二个SQL, TYPE为ref,扫描的行数为436,运行的速度为:0.02sec - 0.03sec

从上面EXPLAIN出来的数据,哪个SQL会更好些。。
...全文
160 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
兼哲 2012-04-03
  • 打赏
  • 举报
回复
似乎你应该先把SQL贴出来,并把表关系和索引关系贴出来,这样给你的建议才会更全面一点
rucypli 2012-04-01
  • 打赏
  • 举报
回复
最终的结果应该是执行快的好 单看扫描行数不准确 1是大约值 2 可能是错误的值
wolfwu_kg5 2012-04-01
  • 打赏
  • 举报
回复
看explain的效果应该是第一个好点
wwwwb 2012-04-01
  • 打赏
  • 举报
回复
没有版表结构、SQL语句,只从扫描的行数来看,似乎第1个要好些
ACMAIN_CHM 2012-04-01
  • 打赏
  • 举报
回复
第一个。
剑心永远OK 2012-04-01
  • 打赏
  • 举报
回复
但我有个疑问,为什么show processlist的时候,第一个SQL经常都会出现的???但执行的效率并不低。
Rotel-刘志东 2012-04-01
  • 打赏
  • 举报
回复
第一个效率高些。
Rotel-刘志东 2012-04-01
  • 打赏
  • 举报
回复
执行计划那个快一些,应该效率会高一些的。

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧