MySQL中使用IN会走索引吗

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

MySQL IN会不会走索引?

结论: MySQL优化器在发现实行全表扫描效率 > 索引的效率时,会选择全表扫描。

  • 至于IN的数据量占全表的20%或30%以内会走索引,没有明确的答案。
  • 根据优化器分析来选择查询本钱更低的实行方式。
MySQL IN流程验证

mysql版本为5.7.34
  1. CREATE TABLE `_default` (
  2.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  3.   `default_name` varchar(100) NOT NULL COMMENT '默认名称',
  4.   `default_code` varchar(50) NOT NULL COMMENT '默认编码',
  5.   `default_type` tinyint(3) unsigned NOT NULL COMMENT '默认类型',
  6.   `start_time` datetime NOT NULL COMMENT '开始时间',
  7.   `end_time` datetime NOT NULL COMMENT '结束时间',
  8.   `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:未发布, 2:已发布, 3:已生效, 4:已失效, 5:已作废)',
  9.   `deleted` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否删除 0:否 1:是',
  10.   `create_by` varchar(50) NOT NULL COMMENT '创建人',
  11.   `create_time` datetime NOT NULL COMMENT '创建时间',
  12.   `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  13.   `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  14.   PRIMARY KEY (`id`),
  15.   UNIQUE KEY `uk_default_code` (`default_code`) USING BTREE,
  16.   KEY `idx_status` (`status`) USING BTREE
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='_default';
复制代码
  1. -- 测试数据
  2. INSERT INTO `_default` VALUES (1, 'test2024-07-29 13:56:03', 'DEFAULT23121410204', 1, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:25:39', NULL, NULL);
  3. INSERT INTO `_default` VALUES (2, 'demoData', 'DEFAULT23121410205', 1, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:25:40', NULL, NULL);
  4. INSERT INTO `_default` VALUES (3, 'demoData', 'DEFAULT23121410206', 1, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '2', '2023-12-14 16:25:41', NULL, NULL);
  5. INSERT INTO `_default` VALUES (4, 'demoData', 'DEFAULT23121410207', 1, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:25:42', NULL, NULL);
  6. INSERT INTO `_default` VALUES (5, 'demoData', 'DEFAULT23121410208', 1, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:25:43', NULL, NULL);
  7. INSERT INTO `_default` VALUES (6, 'demoData', 'DEFAULT23121410209', 0, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:27:09', NULL, NULL);
  8. INSERT INTO `_default` VALUES (7, 'demoData', 'DEFAULT23121410210', 0, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:27:10', NULL, NULL);
  9. INSERT INTO `_default` VALUES (8, 'demoData', 'DEFAULT23121410211', 0, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 2, 0, '1', '2023-12-14 16:27:11', NULL, NULL);
  10. INSERT INTO `_default` VALUES (9, 'demoData', 'DEFAULT23121410212', 0, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 1, 0, '1', '2023-12-14 16:27:12', NULL, NULL);
  11. INSERT INTO `_default` VALUES (10, 'demoData', 'DEFAULT23121410213', 0, '2023-08-11 14:35:41', '2023-08-11 14:35:41', 1, 1, '1', '2023-12-14 16:27:13', NULL, NULL);
复制代码
案例一:
  1. explain select * from _default where id in (1);
复制代码

案例二:
  1. explain select * from _default where id in (1,2,3);
复制代码

案例三:
  1. explain select * from _default where id in (1,2,3,4,5,6,7);
复制代码

从上面三个案例可以看出案例一、案例二走了索引,案例三没有走索引。why?
MySQL TRACE剖析

  1. -- step1:查询mysql optimizer_trace是否开启,on为开启
  2. show variables like 'optimizer_trace';
  3. -- step2:若未开启,设置为开启
  4. set optimizer_trace = 'enabled=on';
  5. -- step3:需要注意查询sql和TRACE一起查询, 如果单独查询完再查询TRAC,查询结果为空
  6. select * from _default where id in (1,2,3,4,5,6,7);
  7. select TRACE from `information_schema`.`OPTIMIZER_TRACE`
  8.        
复制代码
案例一
  1. {
  2.         "steps": [
  3.                 {
  4.                         "join_preparation": {
  5.                                 "select#": 1,
  6.                                 "steps": [
  7.                                         {
  8.                                                 "expanded_query": "/* select#1 */ select `_default`.`id` AS `id`,`_default`.`default_name` AS `default_name`,`_default`.`default_code` AS `default_code`,`_default`.`default_type` AS `default_type`,`_default`.`start_time` AS `start_time`,`_default`.`end_time` AS `end_time`,`_default`.`status` AS `status`,`_default`.`deleted` AS `deleted`,`_default`.`create_by` AS `create_by`,`_default`.`create_time` AS `create_time`,`_default`.`update_by` AS `update_by`,`_default`.`update_time` AS `update_time` from `_default` where (`_default`.`id` = 1)"
  9.                                         }
  10.                                 ]
  11.                         }
  12.                 },
  13.                 {
  14.                         "join_optimization": { -- sql优化阶段
  15.                                 "select#": 1,
  16.                                 "steps": [
  17.                                         {
  18.                                                 "condition_processing": {
  19.                                                         "condition": "WHERE",
  20.                                                         "original_condition": "(`_default`.`id` = 1)",
  21.                                                         "steps": [
  22.                                                                 {
  23.                                                                         "transformation": "equality_propagation",
  24.                                                                         "resulting_condition": "multiple equal(1, `_default`.`id`)"
  25.                                                                 },
  26.                                                                 {
  27.                                                                         "transformation": "constant_propagation",
  28.                                                                         "resulting_condition": "multiple equal(1, `_default`.`id`)"
  29.                                                                 },
  30.                                                                 {
  31.                                                                         "transformation": "trivial_condition_removal",
  32.                                                                         "resulting_condition": "multiple equal(1, `_default`.`id`)"
  33.                                                                 }
  34.                                                         ]
  35.                                                 }
  36.                                         },
  37.                                         {
  38.                                                 "substitute_generated_columns": {}
  39.                                         },
  40.                                         {
  41.                                                 "table_dependencies": [
  42.                                                         {
  43.                                                                 "table": "`_default`",
  44.                                                                 "row_may_be_null": false,
  45.                                                                 "map_bit": 0,
  46.                                                                 "depends_on_map_bits": []
  47.                                                         }
  48.                                                 ]
  49.                                         },
  50.                                         {
  51.                                                 "ref_optimizer_key_uses": [
  52.                                                         {
  53.                                                                 "table": "`_default`",
  54.                                                                 "field": "id",
  55.                                                                 "equals": "1",
  56.                                                                 "null_rejecting": false
  57.                                                         }
  58.                                                 ]
  59.                                         },
  60.                                         {
  61.                                                 "rows_estimation": [
  62.                                                         {
  63.                                                                 "table": "`_default`",
  64.                                                                 "rows": 1,
  65.                                                                 "cost": 1,
  66.                                                                 "table_type": "const",
  67.                                                                 "empty": false
  68.                                                         }
  69.                                                 ]
  70.                                         },
  71.                                         {
  72.                                                 "condition_on_constant_tables": "1",
  73.                                                 "condition_value": true
  74.                                         },
  75.                                         {
  76.                                                 "attaching_conditions_to_tables": {
  77.                                                         "original_condition": "1",
  78.                                                         "attached_conditions_computation": [],
  79.                                                         "attached_conditions_summary": []
  80.                                                 }
  81.                                         },
  82.                                         {
  83.                                                 "refine_plan": []
  84.                                         }
  85.                                 ]
  86.                         }
  87.                 },
  88.                 {
  89.                         "join_execution": {
  90.                                 "select#": 1,
  91.                                 "steps": []
  92.                         }
  93.                 }
  94.         ]
  95. }
复制代码
案例二
  1. {
  2.         "steps": [
  3.                 {
  4.                         "join_preparation": {
  5.                                 "select#": 1,
  6.                                 "steps": [
  7.                                         {
  8.                                                 "IN_uses_bisection": true
  9.                                         },
  10.                                         {
  11.                                                 "expanded_query": "/* select#1 */ select `_default`.`id` AS `id`,`_default`.`default_name` AS `default_name`,`_default`.`default_code` AS `default_code`,`_default`.`default_type` AS `default_type`,`_default`.`start_time` AS `start_time`,`_default`.`end_time` AS `end_time`,`_default`.`status` AS `status`,`_default`.`deleted` AS `deleted`,`_default`.`create_by` AS `create_by`,`_default`.`create_time` AS `create_time`,`_default`.`update_by` AS `update_by`,`_default`.`update_time` AS `update_time` from `_default` where (`_default`.`id` in (1,2,3))"
  12.                                         }
  13.                                 ]
  14.                         }
  15.                 },
  16.                 {
  17.                         "join_optimization": {
  18.                                 "select#": 1,
  19.                                 "steps": [
  20.                                         {
  21.                                                 "condition_processing": {
  22.                                                         "condition": "WHERE",
  23.                                                         "original_condition": "(`_default`.`id` in (1,2,3))",
  24.                                                         "steps": [
  25.                                                                 {
  26.                                                                         "transformation": "equality_propagation",
  27.                                                                         "resulting_condition": "(`_default`.`id` in (1,2,3))"
  28.                                                                 },
  29.                                                                 {
  30.                                                                         "transformation": "constant_propagation",
  31.                                                                         "resulting_condition": "(`_default`.`id` in (1,2,3))"
  32.                                                                 },
  33.                                                                 {
  34.                                                                         "transformation": "trivial_condition_removal",
  35.                                                                         "resulting_condition": "(`_default`.`id` in (1,2,3))"
  36.                                                                 }
  37.                                                         ]
  38.                                                 }
  39.                                         },
  40.                                         {
  41.                                                 "substitute_generated_columns": {}
  42.                                         },
  43.                                         {
  44.                                                 "table_dependencies": [
  45.                                                         {
  46.                                                                 "table": "`_default`",
  47.                                                                 "row_may_be_null": false,
  48.                                                                 "map_bit": 0,
  49.                                                                 "depends_on_map_bits": []
  50.                                                         }
  51.                                                 ]
  52.                                         },
  53.                                         {
  54.                                                 "ref_optimizer_key_uses": []
  55.                                         },
  56.                                         {
  57.                                                 "rows_estimation": [
  58.                                                         {
  59.                                                                 "table": "`_default`",
  60.                                                                 "range_analysis": {
  61.                                                                         "table_scan": {
  62.                                                                                 "rows": 26,
  63.                                                                                 "cost": 8.3
  64.                                                                         },
  65.                                                                         "potential_range_indexes": [
  66.                                                                                 {
  67.                                                                                         "index": "PRIMARY",
  68.                                                                                         "usable": true,
  69.                                                                                         "key_parts": [
  70.                                                                                                 "id"
  71.                                                                                         ]
  72.                                                                                 },
  73.                                                                                 {
  74.                                                                                         "index": "uk_default_code",
  75.                                                                                         "usable": false,
  76.                                                                                         "cause": "not_applicable"
  77.                                                                                 },
  78.                                                                                 {
  79.                                                                                         "index": "idx_status",
  80.                                                                                         "usable": false,
  81.                                                                                         "cause": "not_applicable"
  82.                                                                                 },
  83.                                                                                 {
  84.                                                                                         "index": "idx_default_name",
  85.                                                                                         "usable": false,
  86.                                                                                         "cause": "not_applicable"
  87.                                                                                 }
  88.                                                                         ],
  89.                                                                         "setup_range_conditions": [],
  90.                                                                         "group_index_range": {
  91.                                                                                 "chosen": false,
  92.                                                                                 "cause": "not_group_by_or_distinct"
  93.                                                                         },
  94.                                                                         "analyzing_range_alternatives": {
  95.                                                                                 "range_scan_alternatives": [
  96.                                                                                         {
  97.                                                                                                 "index": "PRIMARY",
  98.                                                                                                 "ranges": [
  99.                                                                                                         "1 <= id <= 1",
  100.                                                                                                         "2 <= id <= 2",
  101.                                                                                                         "3 <= id <= 3"
  102.                                                                                                 ],
  103.                                                                                                 "index_dives_for_eq_ranges": true,
  104.                                                                                                 "rowid_ordered": true,
  105.                                                                                                 "using_mrr": false,
  106.                                                                                                 "index_only": false,
  107.                                                                                                 "rows": 3,
  108.                                                                                                 "cost": 3.6153,
  109.                                                                                                 "chosen": true
  110.                                                                                         }
  111.                                                                                 ],
  112.                                                                                 "analyzing_roworder_intersect": {
  113.                                                                                         "usable": false,
  114.                                                                                         "cause": "too_few_roworder_scans"
  115.                                                                                 }
  116.                                                                         },
  117.                                                                         "chosen_range_access_summary": {
  118.                                                                                 "range_access_plan": {
  119.                                                                                         "type": "range_scan",
  120.                                                                                         "index": "PRIMARY",
  121.                                                                                         "rows": 3,
  122.                                                                                         "ranges": [
  123.                                                                                                 "1 <= id <= 1",
  124.                                                                                                 "2 <= id <= 2",
  125.                                                                                                 "3 <= id <= 3"
  126.                                                                                         ]
  127.                                                                                 },
  128.                                                                                 "rows_for_plan": 3,
  129.                                                                                 "cost_for_plan": 3.6153,
  130.                                                                                 "chosen": true
  131.                                                                         }
  132.                                                                 }
  133.                                                         }
  134.                                                 ]
  135.                                         },
  136.                                         {
  137.                                                 "considered_execution_plans": [
  138.                                                         {
  139.                                                                 "plan_prefix": [],
  140.                                                                 "table": "`_default`",
  141.                                                                 "best_access_path": {
  142.                                                                         "considered_access_paths": [
  143.                                                                                 {
  144.                                                                                         "rows_to_scan": 3,
  145.                                                                                         "access_type": "range",
  146.                                                                                         "range_details": {
  147.                                                                                                 "used_index": "PRIMARY"
  148.                                                                                         },
  149.                                                                                         "resulting_rows": 3,
  150.                                                                                         "cost": 4.2153,
  151.                                                                                         "chosen": true
  152.                                                                                 }
  153.                                                                         ]
  154.                                                                 },
  155.                                                                 "condition_filtering_pct": 100,
  156.                                                                 "rows_for_plan": 3,
  157.                                                                 "cost_for_plan": 4.2153,
  158.                                                                 "chosen": true
  159.                                                         }
  160.                                                 ]
  161.                                         },
  162.                                         {
  163.                                                 "attaching_conditions_to_tables": {
  164.                                                         "original_condition": "(`_default`.`id` in (1,2,3))",
  165.                                                         "attached_conditions_computation": [],
  166.                                                         "attached_conditions_summary": [
  167.                                                                 {
  168.                                                                         "table": "`_default`",
  169.                                                                         "attached": "(`_default`.`id` in (1,2,3))"
  170.                                                                 }
  171.                                                         ]
  172.                                                 }
  173.                                         },
  174.                                         {
  175.                                                 "refine_plan": [
  176.                                                         {
  177.                                                                 "table": "`_default`"
  178.                                                         }
  179.                                                 ]
  180.                                         }
  181.                                 ]
  182.                         }
  183.                 },
  184.                 {
  185.                         "join_execution": {
  186.                                 "select#": 1,
  187.                                 "steps": []
  188.                         }
  189.                 }
  190.         ]
  191. }
复制代码
案例三
  1. {
  2.         "steps": [
  3.                 {
  4.                         "join_preparation": {
  5.                                 "select#": 1,
  6.                                 "steps": [
  7.                                         {
  8.                                                 "IN_uses_bisection": true
  9.                                         },
  10.                                         {
  11.                                                 "expanded_query": "/* select#1 */ select `_default`.`id` AS `id`,`_default`.`default_name` AS `default_name`,`_default`.`default_code` AS `default_code`,`_default`.`default_type` AS `default_type`,`_default`.`start_time` AS `start_time`,`_default`.`end_time` AS `end_time`,`_default`.`status` AS `status`,`_default`.`deleted` AS `deleted`,`_default`.`create_by` AS `create_by`,`_default`.`create_time` AS `create_time`,`_default`.`update_by` AS `update_by`,`_default`.`update_time` AS `update_time` from `_default` where (`_default`.`id` in (1,2,3,4,5,6,7))"
  12.                                         }
  13.                                 ]
  14.                         }
  15.                 },
  16.                 {
  17.                         "join_optimization": {
  18.                                 "select#": 1,
  19.                                 "steps": [
  20.                                         {
  21.                                                 "condition_processing": {
  22.                                                         "condition": "WHERE",
  23.                                                         "original_condition": "(`_default`.`id` in (1,2,3,4,5,6,7))",
  24.                                                         "steps": [
  25.                                                                 {
  26.                                                                         "transformation": "equality_propagation",
  27.                                                                         "resulting_condition": "(`_default`.`id` in (1,2,3,4,5,6,7))"
  28.                                                                 },
  29.                                                                 {
  30.                                                                         "transformation": "constant_propagation",
  31.                                                                         "resulting_condition": "(`_default`.`id` in (1,2,3,4,5,6,7))"
  32.                                                                 },
  33.                                                                 {
  34.                                                                         "transformation": "trivial_condition_removal",
  35.                                                                         "resulting_condition": "(`_default`.`id` in (1,2,3,4,5,6,7))"
  36.                                                                 }
  37.                                                         ]
  38.                                                 }
  39.                                         },
  40.                                         {
  41.                                                 "substitute_generated_columns": {}
  42.                                         },
  43.                                         {
  44.                                                 "table_dependencies": [
  45.                                                         {
  46.                                                                 "table": "`_default`",
  47.                                                                 "row_may_be_null": false,
  48.                                                                 "map_bit": 0,
  49.                                                                 "depends_on_map_bits": []
  50.                                                         }
  51.                                                 ]
  52.                                         },
  53.                                         {
  54.                                                 "ref_optimizer_key_uses": []
  55.                                         },
  56.                                         {
  57.                                                 "rows_estimation": [ -- 预估表的访问成本
  58.                                                         {
  59.                                                                 "table": "`_default`",
  60.                                                                 "range_analysis": {
  61.                                                                         "table_scan": { -- 全表扫描的分析
  62.                                                                                 "rows": 26,        -- 扫描行数
  63.                                                                                 "cost": 8.3 -- 查询成本
  64.                                                                         },
  65.                                                                         "potential_range_indexes": [
  66.                                                                                 {
  67.                                                                                         "index": "PRIMARY",
  68.                                                                                         "usable": true,
  69.                                                                                         "key_parts": [
  70.                                                                                                 "id"
  71.                                                                                         ]
  72.                                                                                 },
  73.                                                                                 {
  74.                                                                                         "index": "uk_default_code",
  75.                                                                                         "usable": false,
  76.                                                                                         "cause": "not_applicable"
  77.                                                                                 },
  78.                                                                                 {
  79.                                                                                         "index": "idx_status",
  80.                                                                                         "usable": false,
  81.                                                                                         "cause": "not_applicable"
  82.                                                                                 },
  83.                                                                                 {
  84.                                                                                         "index": "idx_default_name",
  85.                                                                                         "usable": false,
  86.                                                                                         "cause": "not_applicable"
  87.                                                                                 }
  88.                                                                         ],
  89.                                                                         "setup_range_conditions": [],
  90.                                                                         "group_index_range": {
  91.                                                                                 "chosen": false,
  92.                                                                                 "cause": "not_group_by_or_distinct"
  93.                                                                         },
  94.                                                                         "analyzing_range_alternatives": { -- 分析各个索引使用成本
  95.                                                                                 "range_scan_alternatives": [
  96.                                                                                         {
  97.                                                                                                 "index": "PRIMARY",
  98.                                                                                                 "ranges": [                -- 索引使用范围
  99.                                                                                                         "1 <= id <= 1",
  100.                                                                                                         "2 <= id <= 2",
  101.                                                                                                         "3 <= id <= 3",
  102.                                                                                                         "4 <= id <= 4",
  103.                                                                                                         "5 <= id <= 5",
  104.                                                                                                         "6 <= id <= 6",
  105.                                                                                                         "7 <= id <= 7"
  106.                                                                                                 ],
  107.                                                                                                 "index_dives_for_eq_ranges": true,
  108.                                                                                                 "rowid_ordered": true,
  109.                                                                                                 "using_mrr": false,
  110.                                                                                                 "index_only": false,
  111.                                                                                                 "rows": 7,                 -- 扫描行数
  112.                                                                                                 "cost": 8.4224,  -- 索引使用成本
  113.                                                                                                 "chosen": false, -- 是否使用索引
  114.                                                                                                 "cause": "cost"
  115.                                                                                         }
  116.                                                                                 ],
  117.                                                                                 "analyzing_roworder_intersect": {
  118.                                                                                         "usable": false,
  119.                                                                                         "cause": "too_few_roworder_scans"
  120.                                                                                 }
  121.                                                                         }
  122.                                                                 }
  123.                                                         }
  124.                                                 ]
  125.                                         },
  126.                                         {
  127.                                                 "considered_execution_plans": [
  128.                                                         {
  129.                                                                 "plan_prefix": [],
  130.                                                                 "table": "`_default`",
  131.                                                                 "best_access_path": {
  132.                                                                         "considered_access_paths": [
  133.                                                                                 {
  134.                                                                                         "rows_to_scan": 26,
  135.                                                                                         "access_type": "scan",
  136.                                                                                         "resulting_rows": 26,
  137.                                                                                         "cost": 6.2,
  138.                                                                                         "chosen": true
  139.                                                                                 }
  140.                                                                         ]
  141.                                                                 },
  142.                                                                 "condition_filtering_pct": 100,
  143.                                                                 "rows_for_plan": 26,
  144.                                                                 "cost_for_plan": 6.2,
  145.                                                                 "chosen": true
  146.                                                         }
  147.                                                 ]
  148.                                         },
  149.                                         {
  150.                                                 "attaching_conditions_to_tables": {
  151.                                                         "original_condition": "(`_default`.`id` in (1,2,3,4,5,6,7))",
  152.                                                         "attached_conditions_computation": [],
  153.                                                         "attached_conditions_summary": [
  154.                                                                 {
  155.                                                                         "table": "`_default`",
  156.                                                                         "attached": "(`_default`.`id` in (1,2,3,4,5,6,7))"
  157.                                                                 }
  158.                                                         ]
  159.                                                 }
  160.                                         },
  161.                                         {
  162.                                                 "refine_plan": [
  163.                                                         {
  164.                                                                 "table": "`_default`"
  165.                                                         }
  166.                                                 ]
  167.                                         }
  168.                                 ]
  169.                         }
  170.                 },
  171.                 {
  172.                         "join_execution": {
  173.                                 "select#": 1,
  174.                                 "steps": []
  175.                         }
  176.                 }
  177.         ]
  178. }
复制代码
join_optimization.rows_estimation.range_analysis.table_scan 和 join_optimization.rows_estimation.range_analysis.analyzing_range_alternatives

当索引使用本钱 > 全表扫描的本钱时就会选择全表扫描,全表rows为26,索引rows为7,为什么不消索引?


  • 如果是查全部数据,存在回表的情况,IN的越多回表本钱越高
  • 如果是查询条件和返回字段雷同并且存在索引的情况(覆盖索引),这种情况可能优化器是可能选择索引
system > const> eq_ref > ref > range > index > all

  • system:只有一行记载。
  • const:索引一次就找到了,主键和唯一索引。
  • eq_ref:唯一的索引,表与表之间关联,关联条件为主键或唯一索引。
  • ref:非唯一的索引,根据某个字段查询(有二级索引),存在多行数据。
  • range:范围查询。
  • index:查询索引树(覆盖索引的场景)。
  • all:查询全部数据(与index的区别在于index只遍历索引树,all会在磁盘中查找)。
小结

  到这里就结束啦,祝各人生存舒畅!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表