婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL如何選擇合適的索引

MySQL如何選擇合適的索引

熱門標(biāo)簽:真人語(yǔ)音電話機(jī)器人 怎么在地圖標(biāo)注位置生成圖片 悟空科技電話機(jī)器人 電銷卡外呼系統(tǒng)供應(yīng)商 騰訊地圖標(biāo)注提升 400電話可以免費(fèi)申請(qǐng)嗎 銅陵防封電銷卡 美國(guó)反騷擾電話機(jī)器人 福建外呼系統(tǒng)定制化

先來(lái)看一個(gè)栗子

EXPLAIN select * from employees where name > 'a';

如果用name索引查找數(shù)據(jù)需要遍歷name字段聯(lián)合索引樹,然后根據(jù)遍歷出來(lái)的主鍵值去主鍵索引樹里再去查出最終數(shù)據(jù),成本比全表掃描還高。

可以用覆蓋索引優(yōu)化,這樣只需要遍歷name字段的聯(lián)合索引樹就可以拿到所有的結(jié)果。

EXPLAIN select name,age,position from employees where name > 'a';

可以看到通過select出的字段是覆蓋索引,MySQL底層使用了索引優(yōu)化。在看另一個(gè)case:

EXPLAIN select * from employees where name > 'zzz';

對(duì)于上面的這兩種 name>'a' 和 name>'zzz'的執(zhí)行結(jié)果, mysql最終是否選擇走索引或者一張表涉及多個(gè)索引, mysql最終如何選擇索引,可以通過trace工具來(lái)一查究竟,開啟trace工具會(huì)影響mysql性能,所以只能臨時(shí)分析sql使用,用完之后需要立即關(guān)閉。

SET SESSION optimizer_trace="enabled=on",end_markers_in_json=on; --開啟trace
SELECT * FROM employees WHERE name > 'a' ORDER BY position;
SELECT * FROM information_schema.OPTIMIZER_TRACE;

看trace字段:

{
 "steps": [
 {
  "join_preparation": { --第一階段:SQl準(zhǔn)備階段
  "select#": 1,
  "steps": [
   {
   "expanded_query": "/* select#1 */ select `employees`.`id` AS `id`,`employees`.`name` AS `name`,`employees`.`age` AS `age`,`employees`.`position` AS `position`,`employees`.`hire_time` AS `hire_time` from `employees` where (`employees`.`name` > 'a') order by `employees`.`position`"
   }
  ] /* steps */
  } /* join_preparation */
 },
 {
  "join_optimization": { --第二階段:SQL優(yōu)化階段
  "select#": 1,
  "steps": [
   {
   "condition_processing": { --條件處理
    "condition": "WHERE",
    "original_condition": "(`employees`.`name` > 'a')",
    "steps": [
    {
     "transformation": "equality_propagation",
     "resulting_condition": "(`employees`.`name` > 'a')"
    },
    {
     "transformation": "constant_propagation",
     "resulting_condition": "(`employees`.`name` > 'a')"
    },
    {
     "transformation": "trivial_condition_removal",
     "resulting_condition": "(`employees`.`name` > 'a')"
    }
    ] /* steps */
   } /* condition_processing */
   },
   {
   "table_dependencies": [ --表依賴詳情
    {
    "table": "`employees`",
    "row_may_be_null": false,
    "map_bit": 0,
    "depends_on_map_bits": [
    ] /* depends_on_map_bits */
    }
   ] /* table_dependencies */
   },
   {
   "ref_optimizer_key_uses": [
   ] /* ref_optimizer_key_uses */
   },
   {
   "rows_estimation": [ --預(yù)估標(biāo)的訪問成本
    {
    "table": "`employees`",
    "range_analysis": {
     "table_scan": { --全表掃描情況
     "rows": 3, --掃描行數(shù)
     "cost": 3.7 --查詢成本
     } /* table_scan */,
     "potential_range_indices": [ --查詢可能使用的索引
     {
      "index": "PRIMARY", --主鍵索引
      "usable": false,
      "cause": "not_applicable"
     },
     {
      "index": "idx_name_age_position", --輔助索引
      "usable": true,
      "key_parts": [
      "name",
      "age",
      "position",
      "id"
      ] /* key_parts */
     },
     {
      "index": "idx_age",
      "usable": false,
      "cause": "not_applicable"
     }
     ] /* potential_range_indices */,
     "setup_range_conditions": [
     ] /* setup_range_conditions */,
     "group_index_range": {
     "chosen": false,
     "cause": "not_group_by_or_distinct"
     } /* group_index_range */,
     "analyzing_range_alternatives": { ‐‐分析各個(gè)索引使用成本
     "range_scan_alternatives": [
      {
      "index": "idx_name_age_position",
      "ranges": [
       "a  name"
      ] /* ranges */,
      "index_dives_for_eq_ranges": true,
      "rowid_ordered": false,
      "using_mrr": false,
      "index_only": false, ‐‐是否使用覆蓋索引
      "rows": 3, --‐‐索引掃描行數(shù)
      "cost": 4.61, --索引使用成本
      "chosen": false, ‐‐是否選擇該索引
      "cause": "cost"
      }
     ] /* range_scan_alternatives */,
     "analyzing_roworder_intersect": {
      "usable": false,
      "cause": "too_few_roworder_scans"
     } /* analyzing_roworder_intersect */
     } /* analyzing_range_alternatives */
    } /* range_analysis */
    }
   ] /* rows_estimation */
   },
   {
   "considered_execution_plans": [
    {
    "plan_prefix": [
    ] /* plan_prefix */,
    "table": "`employees`",
    "best_access_path": {
     "considered_access_paths": [
     {
      "access_type": "scan",
      "rows": 3,
      "cost": 1.6,
      "chosen": true,
      "use_tmp_table": true
     }
     ] /* considered_access_paths */
    } /* best_access_path */,
    "cost_for_plan": 1.6,
    "rows_for_plan": 3,
    "sort_cost": 3,
    "new_cost_for_plan": 4.6,
    "chosen": true
    }
   ] /* considered_execution_plans */
   },
   {
   "attaching_conditions_to_tables": {
    "original_condition": "(`employees`.`name` > 'a')",
    "attached_conditions_computation": [
    ] /* attached_conditions_computation */,
    "attached_conditions_summary": [
    {
     "table": "`employees`",
     "attached": "(`employees`.`name` > 'a')"
    }
    ] /* attached_conditions_summary */
   } /* attaching_conditions_to_tables */
   },
   {
   "clause_processing": {
    "clause": "ORDER BY",
    "original_clause": "`employees`.`position`",
    "items": [
    {
     "item": "`employees`.`position`"
    }
    ] /* items */,
    "resulting_clause_is_simple": true,
    "resulting_clause": "`employees`.`position`"
   } /* clause_processing */
   },
   {
   "refine_plan": [
    {
    "table": "`employees`",
    "access_type": "table_scan"
    }
   ] /* refine_plan */
   },
   {
   "reconsidering_access_paths_for_index_ordering": {
    "clause": "ORDER BY",
    "index_order_summary": {
    "table": "`employees`",
    "index_provides_order": false,
    "order_direction": "undefined",
    "index": "unknown",
    "plan_changed": false
    } /* index_order_summary */
   } /* reconsidering_access_paths_for_index_ordering */
   }
  ] /* steps */
  } /* join_optimization */
 },
 {
  "join_execution": { --第三階段:SQL執(zhí)行階段
  "select#": 1,
  "steps": [
   {
   "filesort_information": [
    {
    "direction": "asc",
    "table": "`employees`",
    "field": "position"
    }
   ] /* filesort_information */,
   "filesort_priority_queue_optimization": {
    "usable": false,
    "cause": "not applicable (no LIMIT)"
   } /* filesort_priority_queue_optimization */,
   "filesort_execution": [
   ] /* filesort_execution */,
   "filesort_summary": {
    "rows": 3,
    "examined_rows": 3,
    "number_of_tmp_files": 0,
    "sort_buffer_size": 200704,
    "sort_mode": "sort_key, additional_fields>"
   } /* filesort_summary */
   }
  ] /* steps */
  } /* join_execution */
 }
 ] /* steps */
}

全表掃描的成本低于索引掃描, 索引MySQL最終會(huì)選擇全表掃描。

SELECT * FROM employees WHERE name > 'zzz' ORDER BY position;
SELECT * FROM information_schema.OPTIMIZER_TRACE;

{
 "steps": [
 {
  "join_preparation": {
  "select#": 1,
  "steps": [
   {
   "expanded_query": "/* select#1 */ select `employees`.`id` AS `id`,`employees`.`name` AS `name`,`employees`.`age` AS `age`,`employees`.`position` AS `position`,`employees`.`hire_time` AS `hire_time` from `employees` where (`employees`.`name` > 'zzz') order by `employees`.`position`"
   }
  ] /* steps */
  } /* join_preparation */
 },
 {
  "join_optimization": {
  "select#": 1,
  "steps": [
   {
   "condition_processing": {
    "condition": "WHERE",
    "original_condition": "(`employees`.`name` > 'zzz')",
    "steps": [
    {
     "transformation": "equality_propagation",
     "resulting_condition": "(`employees`.`name` > 'zzz')"
    },
    {
     "transformation": "constant_propagation",
     "resulting_condition": "(`employees`.`name` > 'zzz')"
    },
    {
     "transformation": "trivial_condition_removal",
     "resulting_condition": "(`employees`.`name` > 'zzz')"
    }
    ] /* steps */
   } /* condition_processing */
   },
   {
   "table_dependencies": [
    {
    "table": "`employees`",
    "row_may_be_null": false,
    "map_bit": 0,
    "depends_on_map_bits": [
    ] /* depends_on_map_bits */
    }
   ] /* table_dependencies */
   },
   {
   "ref_optimizer_key_uses": [
   ] /* ref_optimizer_key_uses */
   },
   {
   "rows_estimation": [
    {
    "table": "`employees`",
    "range_analysis": {
     "table_scan": {
     "rows": 3,
     "cost": 3.7
     } /* table_scan */,
     "potential_range_indices": [
     {
      "index": "PRIMARY",
      "usable": false,
      "cause": "not_applicable"
     },
     {
      "index": "idx_name_age_position",
      "usable": true,
      "key_parts": [
      "name",
      "age",
      "position",
      "id"
      ] /* key_parts */
     },
     {
      "index": "idx_age",
      "usable": false,
      "cause": "not_applicable"
     }
     ] /* potential_range_indices */,
     "setup_range_conditions": [
     ] /* setup_range_conditions */,
     "group_index_range": {
     "chosen": false,
     "cause": "not_group_by_or_distinct"
     } /* group_index_range */,
     "analyzing_range_alternatives": {
     "range_scan_alternatives": [
      {
      "index": "idx_name_age_position",
      "ranges": [
       "zzz  name"
      ] /* ranges */,
      "index_dives_for_eq_ranges": true,
      "rowid_ordered": false,
      "using_mrr": false,
      "index_only": false,
      "rows": 1,
      "cost": 2.21,
      "chosen": true
      }
     ] /* range_scan_alternatives */,
     "analyzing_roworder_intersect": {
      "usable": false,
      "cause": "too_few_roworder_scans"
     } /* analyzing_roworder_intersect */
     } /* analyzing_range_alternatives */,
     "chosen_range_access_summary": {
     "range_access_plan": {
      "type": "range_scan",
      "index": "idx_name_age_position",
      "rows": 1,
      "ranges": [
      "zzz  name"
      ] /* ranges */
     } /* range_access_plan */,
     "rows_for_plan": 1,
     "cost_for_plan": 2.21,
     "chosen": true
     } /* chosen_range_access_summary */
    } /* range_analysis */
    }
   ] /* rows_estimation */
   },
   {
   "considered_execution_plans": [
    {
    "plan_prefix": [
    ] /* plan_prefix */,
    "table": "`employees`",
    "best_access_path": {
     "considered_access_paths": [
     {
      "access_type": "range",
      "rows": 1,
      "cost": 2.41,
      "chosen": true,
      "use_tmp_table": true
     }
     ] /* considered_access_paths */
    } /* best_access_path */,
    "cost_for_plan": 2.41,
    "rows_for_plan": 1,
    "sort_cost": 1,
    "new_cost_for_plan": 3.41,
    "chosen": true
    }
   ] /* considered_execution_plans */
   },
   {
   "attaching_conditions_to_tables": {
    "original_condition": "(`employees`.`name` > 'zzz')",
    "attached_conditions_computation": [
    ] /* attached_conditions_computation */,
    "attached_conditions_summary": [
    {
     "table": "`employees`",
     "attached": "(`employees`.`name` > 'zzz')"
    }
    ] /* attached_conditions_summary */
   } /* attaching_conditions_to_tables */
   },
   {
   "clause_processing": {
    "clause": "ORDER BY",
    "original_clause": "`employees`.`position`",
    "items": [
    {
     "item": "`employees`.`position`"
    }
    ] /* items */,
    "resulting_clause_is_simple": true,
    "resulting_clause": "`employees`.`position`"
   } /* clause_processing */
   },
   {
   "refine_plan": [
    {
    "table": "`employees`",
    "pushed_index_condition": "(`employees`.`name` > 'zzz')",
    "table_condition_attached": null,
    "access_type": "range"
    }
   ] /* refine_plan */
   },
   {
   "reconsidering_access_paths_for_index_ordering": {
    "clause": "ORDER BY",
    "index_order_summary": {
    "table": "`employees`",
    "index_provides_order": false,
    "order_direction": "undefined",
    "index": "idx_name_age_position",
    "plan_changed": false
    } /* index_order_summary */
   } /* reconsidering_access_paths_for_index_ordering */
   }
  ] /* steps */
  } /* join_optimization */
 },
 {
  "join_execution": {
  "select#": 1,
  "steps": [
   {
   "filesort_information": [
    {
    "direction": "asc",
    "table": "`employees`",
    "field": "position"
    }
   ] /* filesort_information */,
   "filesort_priority_queue_optimization": {
    "usable": false,
    "cause": "not applicable (no LIMIT)"
   } /* filesort_priority_queue_optimization */,
   "filesort_execution": [
   ] /* filesort_execution */,
   "filesort_summary": {
    "rows": 0,
    "examined_rows": 0,
    "number_of_tmp_files": 0,
    "sort_buffer_size": 200704,
    "sort_mode": "sort_key, additional_fields>"
   } /* filesort_summary */
   }
  ] /* steps */
  } /* join_execution */
 }
 ] /* steps */
}

查看trace字段可知索引掃描的成本低于全表掃描的成本,所以MySQL最終選擇索引掃描。

SET SESSION optimizer_trace="enabled=off"; -- 關(guān)閉trace

總結(jié)

以上所述是小編給大家介紹的MySQL如何選擇合適的索引,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

您可能感興趣的文章:
  • 為什么MySQL數(shù)據(jù)庫(kù)索引選擇使用B+樹?
  • 探究MySQL優(yōu)化器對(duì)索引和JOIN順序的選擇
  • mysql的in會(huì)不會(huì)讓索引失效?
  • MySQL組合索引與最左匹配原則詳解
  • Mysql如何適當(dāng)?shù)奶砑铀饕榻B
  • 一個(gè)案例徹底弄懂如何正確使用mysql inndb聯(lián)合索引
  • MySQL中有哪些情況下數(shù)據(jù)庫(kù)索引會(huì)失效詳析
  • 深入淺析Mysql聯(lián)合索引最左匹配原則
  • Mysql使用索引的正確方法及索引原理詳解
  • MySQL的索引詳解
  • MySQL索引使用說明(單列索引和多列索引)

標(biāo)簽:湖南 烏海 湖北 臨汾 聊城 云浮 白銀 武威

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL如何選擇合適的索引》,本文關(guān)鍵詞  MySQL,如何,選擇,合適,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL如何選擇合適的索引》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL如何選擇合適的索引的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品日日夜夜| www.性欧美| 成人丝袜18视频在线观看| 在线成人av影院| 91精品国产色综合久久久蜜香臀| 久久蜜桃香蕉精品一区二区三区| 亚洲综合视频在线| 久久久久久久av麻豆果冻| 男女男精品视频网| 欧美中文字幕亚洲一区二区va在线| 国产精品久99| 99视频精品在线| 亚洲欧美精品午睡沙发| av网站免费线看精品| 中文字幕一区免费在线观看| 91在线播放网址| 亚洲综合无码一区二区| 欧美日韩精品一区二区| 亚洲一区二区三区三| 欧美军同video69gay| 男女男精品视频| 久久久久99精品一区| 久久 天天综合| 国产精品亲子乱子伦xxxx裸| 91麻豆国产福利在线观看| 亚洲欧美另类综合偷拍| 欧美日韩视频不卡| 奇米一区二区三区av| 国产欧美日韩在线| 欧美美女激情18p| 国产精品一区不卡| 亚洲v精品v日韩v欧美v专区| 久久久久99精品一区| 欧美性色综合网| 久久99精品久久只有精品| 国产精品美女一区二区三区 | 国产亚洲福利社区一区| 在线亚洲精品福利网址导航| www国产成人| 欧美专区日韩专区| 久久蜜桃av一区精品变态类天堂 | 亚洲一区在线免费观看| 精品国产精品一区二区夜夜嗨| 风流少妇一区二区| 麻豆精品视频在线| 亚洲国产sm捆绑调教视频 | 亚洲18色成人| 国产精品无遮挡| 国产亚洲成年网址在线观看| 91精品久久久久久久久99蜜臂| 欧美一区二区美女| 亚洲一区二区在线视频| 在线观看免费一区| 亚洲一二三级电影| 国产精品久久久久久亚洲伦| 精品欧美久久久| 国产精品视频麻豆| jlzzjlzz亚洲女人18| 免费xxxx性欧美18vr| 91在线视频免费91| 国产欧美一区二区精品性色| 亚洲日本在线看| 555www色欧美视频| 国产亚洲人成网站| 亚洲va欧美va人人爽午夜| 中文字幕一区二区在线观看| 欧美日韩成人一区| 欧美色精品在线视频| 懂色av一区二区在线播放| 亚洲成人免费在线| 成人免费高清视频在线观看| 麻豆91免费看| 国产精品久久久久婷婷二区次| 欧美日韩一区不卡| 性欧美大战久久久久久久久| 亚洲久草在线视频| 国产精品狼人久久影院观看方式| 国产亚洲成年网址在线观看| 在线观看av一区| 成人国产免费视频| 国产福利一区在线| 亚洲精品美腿丝袜| 欧美精品三级日韩久久| 国产精品久久久久久久第一福利| 中文字幕一区二区三区乱码在线 | 香蕉加勒比综合久久| 日韩高清在线电影| 成人aa视频在线观看| 777奇米四色成人影色区| 国产无一区二区| 亚洲成a人v欧美综合天堂下载| 91色婷婷久久久久合中文| 午夜日韩在线观看| 99久久免费视频.com| 欧美三级三级三级爽爽爽| 亚洲人成小说网站色在线| 成人美女视频在线观看18| 波多野结衣的一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 中文字幕亚洲欧美在线不卡| 欧美精品一区二区高清在线观看| 免费成人在线观看视频| 粉嫩绯色av一区二区在线观看| 国产原创一区二区三区| av电影在线观看不卡| 精品综合免费视频观看| 91久久一区二区| 色老头久久综合| 亚洲一区自拍偷拍| 老司机一区二区| 亚洲男人天堂一区| 国产精品88av| 成人午夜视频在线观看| 欧美一区二区三区免费视频| 日韩亚洲欧美综合| 欧美激情艳妇裸体舞| 欧美日韩一卡二卡三卡| 欧美日韩精品一区视频| 中文字幕亚洲一区二区av在线 | 五月婷婷欧美视频| 国产精品99久久久久久有的能看 | 国产九色精品成人porny| 亚洲电影在线播放| 捆绑调教美女网站视频一区| 91最新地址在线播放| 中文字幕中文字幕中文字幕亚洲无线| 亚洲高清视频在线| 色8久久精品久久久久久蜜| 日韩欧美国产高清| 午夜欧美电影在线观看| 欧美日韩视频专区在线播放| 中文字幕乱码日本亚洲一区二区 | 欧美日韩精品高清| 香蕉av福利精品导航| 粉嫩一区二区三区在线看| 久久日韩精品一区二区五区| 亚洲成人你懂的| 欧美日韩你懂的| 精品日产卡一卡二卡麻豆| 久久99久久久久| 91麻豆精品91久久久久同性| 日韩av中文字幕一区二区三区| 欧美日韩精品一区二区天天拍小说| 久久精品免费观看| 7777精品伊人久久久大香线蕉最新版| 国产成人在线免费观看| 欧美精品在线一区二区| 久久久久久久国产精品影院| 在线播放视频一区| 91精品国产一区二区三区| 一区二区三区在线播放| 亚洲国产精品综合小说图片区| 奇米精品一区二区三区在线观看 | 成人午夜伦理影院| 亚洲日本欧美天堂| 日韩激情av在线| 久久无码av三级| 免费在线看一区| 国产亚洲一二三区| 国产精品免费丝袜| 亚洲国产欧美另类丝袜| 精品国产乱码久久久久久夜甘婷婷| 欧美精品一区二区三区高清aⅴ| 国产成人在线影院| 欧美日韩亚洲国产综合| 国产乱淫av一区二区三区| 日韩视频免费直播| 成人av资源在线观看| 欧美视频一区在线| 国产精品一区二区男女羞羞无遮挡| 日韩精品亚洲专区| 精品区一区二区| 欧美aⅴ一区二区三区视频| 首页国产欧美日韩丝袜| 国产三级三级三级精品8ⅰ区| 精品一区二区免费视频| 亚洲国产成人在线| 大陆成人av片| 蜜臀a∨国产成人精品| 日韩视频123| 在线一区二区视频| 午夜精品福利在线| 久久精品夜夜夜夜久久| www.欧美亚洲| 国内不卡的二区三区中文字幕| 国产大陆亚洲精品国产| 日韩欧美国产不卡| 99re热这里只有精品免费视频| 亚洲人成精品久久久久久 | 亚洲欧美自拍偷拍色图| www.成人在线| 国模大尺度一区二区三区| 国产精品久久久久一区二区三区共| 欧美成人bangbros| 成人自拍视频在线观看| 色婷婷综合久久久久中文 | 国产精品国产精品国产专区不蜜| 99国产精品99久久久久久| 日韩一级片在线播放| 欧美大白屁股肥臀xxxxxx|