找回密码
 立即注册
首页 业界区 安全 mysql explain详解二

mysql explain详解二

峰邑 2025-6-1 18:24:20
前言

explain的下一篇
正文

其中一个字段就是extra,这个字段东西非常多,如果需要知道额外的,可以当场去查,大致会告诉我们一些执行的详细的东西。
如果我们想知道,详细的成本是怎么计算的,那么可以详细的输出:
EXPLAIN FORMAT=JSON SELECT * FROM s1 INNER JOIN s2 ON s1.key1 = s2.key2 WHERE s1.co
mmon_field = 'a'\G
  1. EXPLAIN: {
  2. "query_block": {
  3. "select_id": 1, # 整个查询语句只有1个SELECT关键字,该关键字对应的id号为1
  4. "cost_info": {
  5. "query_cost": "3197.16" # 整个查询的执行成本预计为3197.16
  6. },
  7. "nested_loop": [ # 几个表之间采用嵌套循环连接算法执行
  8. # 以下是参与嵌套循环连接算法的各个表的信息
  9. {
  10. "table": {
  11. "table_name": "s1", # s1表是驱动表
  12. "access_type": "ALL", # 访问方法为ALL,意味着使用全表扫描访问
  13. "possible_keys": [ # 可能使用的索引
  14. "idx_key1"
  15. ],
  16. "rows_examined_per_scan": 9688, # 查询一次s1表大致需要扫描9688条记录
  17. "rows_produced_per_join": 968, # 驱动表s1的扇出是968
  18. "filtered": "10.00", # condition filtering代表的百分比
  19. "cost_info": {
  20. "read_cost": "1840.84", # 稍后解释
  21. "eval_cost": "193.76", # 稍后解释
  22. "prefix_cost": "2034.60", # 单次查询s1表总共的成本
  23. "data_read_per_join": "1M" # 读取的数据量
  24. },
  25. "used_columns": [ # 执行查询中涉及到的列
  26. "id",
  27. "key1",
  28. "key2",
  29. "key3",
  30. "key_part1",
  31. "key_part2",
  32. "key_part3",
  33. "common_field"
  34. ],
  35. # 对s1表访问时针对单表查询的条件
  36. "attached_condition": "((`xiaohaizi`.`s1`.`common_field` = 'a') and (`xiaohaizi
  37. `.`s1`.`key1` is not null))"
  38. }
  39. },
  40. {
  41. "table": {
  42. "table_name": "s2", # s2表是被驱动表
  43. "access_type": "ref", # 访问方法为ref,意味着使用索引等值匹配的方式访问
  44. "possible_keys": [ # 可能使用的索引
  45. "idx_key2"
  46. ],  "key": "idx_key2", # 实际使用的索引
  47. "used_key_parts": [ # 使用到的索引列
  48. "key2"
  49. ],
  50. "key_length": "5", # key_len
  51. "ref": [ # 与key2列进行等值匹配的对象
  52. "xiaohaizi.s1.key1"
  53. ],
  54. "rows_examined_per_scan": 1, # 查询一次s2表大致需要扫描1条记录
  55. "rows_produced_per_join": 968, # 被驱动表s2的扇出是968(由于后边没有多余的表
  56. 进行连接,所以这个值也没啥用)
  57. "filtered": "100.00", # condition filtering代表的百分比
  58. # s2表使用索引进行查询的搜索条件
  59. "index_condition": "(`xiaohaizi`.`s1`.`key1` = `xiaohaizi`.`s2`.`key2`)",
  60. "cost_info": {
  61. "read_cost": "968.80", # 稍后解释
  62. "eval_cost": "193.76", # 稍后解释
  63. "prefix_cost": "3197.16", # 单次查询s1、多次查询s2表总共的成本
  64. "data_read_per_join": "1M" # 读取的数据量
  65. },
  66. "used_columns": [ # 执行查询中涉及到的列
  67. "id",
  68. "key1",
  69. "key2",
  70. "key3",
  71. "key_part1",
  72. "key_part2",
  73. "key_part3",
  74. "common_field"
  75. ]
  76. }
  77. }
  78. ]
  79. }
  80. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册