MySQL ORDER BY主键id加LIMIT限制走错索引
背景及现象
- report_product_sales_data表数据量2800万;
- 经测试,在当前数据量情况下,order by主键id,limit最大到49的时候可以用到索引report_product_sales_data_hq_code_orgz_id_index,大于49时就走PRIMARY主键索引。
表结构
CREATE TABLE `report_product_sales_data` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`hq_code` char(16) COLLATE utf8_unicode_ci NOT NULL COMMENT '公司编码',
`product_id` int(10) unsigned NOT NULL COMMENT '商品ID',
`orgz_id` int(10) unsigned NOT NULL COMMENT '组织ID',
`sales_num` double(16,3) NOT NULL COMMENT '销售数量',
`report_date` date NOT NULL COMMENT '报表日期',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态: 0.未日结,1.已日结',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `report_product_sales_data_unique` (`hq_code`,`report_date`,`orgz_id`,`product_id`),
KEY `report_product_sales_data_hq_code_orgz_id_index` (`hq_code`,`orgz_id`,`report_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品日营业数据表';
Explain命令查看执行计划
-- 批量查询耗时154ms
select product_id, sales_num, report_date from `report_product_sales_data`
where `hq_code` = '000030'
and `orgz_id` = 229
and `product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)
and `report_date` > '2018-05-11' order by id desc
limit 320;
-- explain结果如下
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE report_product_sales_data range report_product_sales_data_unique,report_product_sales_data_hq_code_orgz_id_index report_product_sales_data_hq_code_orgz_id_index 55 NULL 37088 Using index condition; Using where; Using filesort
-- 批量查询耗时397ms
select product_id, sales_num, report_date from `report_product_sales_data`
where `hq_code` = '000030'
and `orgz_id` = 229
and `product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)
and `report_date` > '2018-05-11'
order by `id` desc limit 10;
-- explain结果如下
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE report_product_sales_data index report_product_sales_data_unique,report_product_sales_data_hq_code_orgz_id_index PRIMARY 4 NULL 7624 Using where
开启优化器跟踪查看MySQL优化过程
-- 开启优化器跟踪
set session optimizer_trace='enabled=on';
-- 在执行完查询语句后,在执行以下的select语句可以查看具体的优化器执行过程
select * from information_schema.optimizer_trace;
-- 对于这条走了预期report_product_sales_data_hq_code_orgz_id_index索引的查询,我们看下优化器的执行过程
select product_id, sales_num, report_date from `report_product_sales_data`
where `hq_code` = '000030'
and `orgz_id` = 229
and `product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)
and `report_date` > '2018-05-11' order by id desc
limit 320;
-- 看下trace部分
{
"steps": [
{
"join_preparation": {
"select#": 1,
"steps": [
{
"expanded_query": "/* select#1 */ select `report_product_sales_data`.`product_id` AS `product_id`,`report_product_sales_data`.`sales_num` AS `sales_num`,`report_product_sales_data`.`report_date` AS `report_date` from `report_product_sales_data` where ((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11')) order by `report_product_sales_data`.`id` desc limit 320"
}
]
}
},
{
"join_optimization": {
"select#": 1,
"steps": [
{
"condition_processing": {
"condition": "WHERE",
"original_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11'))",
"steps": [
{
"transformation": "equality_propagation",
"resulting_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11') and multiple equal(229, `report_product_sales_data`.`orgz_id`))"
},
{
"transformation": "constant_propagation",
"resulting_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11') and multiple equal(229, `report_product_sales_data`.`orgz_id`))"
},
{
"transformation": "trivial_condition_removal",
"resulting_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11') and multiple equal(229, `report_product_sales_data`.`orgz_id`))"
}
]
}
},
{
"table_dependencies": [
{
"table": "`report_product_sales_data`",
"row_may_be_null": false,
"map_bit": 0,
"depends_on_map_bits": [
]
}
]
},
{
"ref_optimizer_key_uses": [
{
"table": "`report_product_sales_data`",
"field": "hq_code",
"equals": "'000030'",
"null_rejecting": false
},
{
"table": "`report_product_sales_data`",
"field": "hq_code",
"equals": "'000030'",
"null_rejecting": false
},
{
"table": "`report_product_sales_data`",
"field": "orgz_id",
"equals": "229",
"null_rejecting": false
}
]
},
{
"rows_estimation": [
{
"table": "`report_product_sales_data`",
"range_analysis": {
"table_scan": {
"rows": 28276082,
"cost": 6.14e6
},
"potential_range_indices": [
{
"index": "PRIMARY",
"usable": false,
"cause": "not_applicable"
},
{
"index": "report_product_sales_data_unique",
"usable": true,
"key_parts": [
"hq_code",
"report_date",
"orgz_id",
"product_id"
]
},
{
"index": "report_product_sales_data_hq_code_orgz_id_index",
"usable": true,
"key_parts": [
"hq_code",
"orgz_id",
"report_date",
"id"
]
}
],
"setup_range_conditions": [
],
"group_index_range": {
"chosen": false,
"cause": "not_group_by_or_distinct"
},
"analyzing_range_alternatives": {
"range_scan_alternatives": [
{
"index": "report_product_sales_data_unique",
"ranges": [
"000030 <= hq_code <= 000030 AND 2018-05-11 < report_date"
],
"index_dives_for_eq_ranges": true,
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 1848962,
"cost": 2.22e6,
"chosen": true
},
{
"index": "report_product_sales_data_hq_code_orgz_id_index",
"ranges": [
"000030 <= hq_code <= 000030 AND 229 <= orgz_id <= 229 AND 2018-05-11 < report_date"
],
"index_dives_for_eq_ranges": true,
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 37088,
"cost": 44507,
"chosen": true
}
],
"analyzing_roworder_intersect": {
"usable": false,
"cause": "too_few_roworder_scans"
}
},
"chosen_range_access_summary": {
"range_access_plan": {
"type": "range_scan",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"rows": 37088,
"ranges": [
"000030 <= hq_code <= 000030 AND 229 <= orgz_id <= 229 AND 2018-05-11 < report_date"
]
},
"rows_for_plan": 37088,
"cost_for_plan": 44507,
"chosen": true
}
}
}
]
},
{
"considered_execution_plans": [
{
"plan_prefix": [
],
"table": "`report_product_sales_data`",
"best_access_path": {
"considered_access_paths": [
{
"access_type": "ref",
"index": "report_product_sales_data_unique",
"rows": 1.85e6,
"cost": 1.82e6,
"chosen": true
},
{
//可以看到选择report_product_sales_data_hq_code_orgz_id_index这个索引时cost最小
"access_type": "ref",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"rows": 37088,
"cost": 44506,
"chosen": true
},
{
"access_type": "range",
"rows": 27816,
"cost": 51924,
"chosen": false
}
]
},
"cost_for_plan": 44506,
"rows_for_plan": 37088,
"chosen": true
}
]
},
{
"attaching_conditions_to_tables": {
"original_condition": "((`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11'))",
"attached_conditions_computation": [
{
"access_type_changed": {
"table": "`report_product_sales_data`",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"old_type": "ref",
"new_type": "range",
"cause": "uses_more_keyparts"
}
}
],
"attached_conditions_summary": [
{
"table": "`report_product_sales_data`",
"attached": "((`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11'))"
}
]
}
},
{
"clause_processing": {
"clause": "ORDER BY",
"original_clause": "`report_product_sales_data`.`id` desc",
"items": [
{
"item": "`report_product_sales_data`.`id`"
}
],
"resulting_clause_is_simple": true,
"resulting_clause": "`report_product_sales_data`.`id` desc"
}
},
{
"refine_plan": [
{
"table": "`report_product_sales_data`",
"pushed_index_condition": "((`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`report_date` > '2018-05-11'))",
"table_condition_attached": "(`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938))",
"access_type": "range"
}
]
},
{
"reconsidering_access_paths_for_index_ordering": {
//到了order by id这边时,MySQL也没有改变执行计划,还是选择了report_product_sales_data_hq_code_orgz_id_index索引
"clause": "ORDER BY",
"index_order_summary": {
"table": "`report_product_sales_data`",
"index_provides_order": false,
"order_direction": "undefined",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"plan_changed": false
}
}
}
]
}
},
{
"join_execution": {
"select#": 1,
"steps": [
{
"filesort_information": [
{
"direction": "desc",
"table": "`report_product_sales_data`",
"field": "id"
}
],
"filesort_priority_queue_optimization": {
"limit": 320,
"rows_estimate": 61044633,
"row_size": 76,
"memory_available": 262144,
"chosen": true
},
"filesort_execution": [
],
"filesort_summary": {
"rows": 321,
"examined_rows": 15768,
"number_of_tmp_files": 0,
"sort_buffer_size": 26964,
"sort_mode": "<sort_key, additional_fields>"
}
}
]
}
}
]
}
-- 对于这条走了非预期PRIMARY主键索引的查询,我们看下优化器的执行过程
select product_id, sales_num, report_date from `report_product_sales_data`
where `hq_code` = '000030'
and `orgz_id` = 229
and `product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)
and `report_date` > '2018-05-11' order by id desc
limit 10;
-- 看下trace部分
{
"steps": [
{
"join_preparation": {
"select#": 1,
"steps": [
{
"expanded_query": "/* select#1 */ select `report_product_sales_data`.`product_id` AS `product_id`,`report_product_sales_data`.`sales_num` AS `sales_num`,`report_product_sales_data`.`report_date` AS `report_date` from `report_product_sales_data` where ((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11')) order by `report_product_sales_data`.`id` desc limit 10"
}
]
}
},
{
"join_optimization": {
"select#": 1,
"steps": [
{
"condition_processing": {
"condition": "WHERE",
"original_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11'))",
"steps": [
{
"transformation": "equality_propagation",
"resulting_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11') and multiple equal(229, `report_product_sales_data`.`orgz_id`))"
},
{
"transformation": "constant_propagation",
"resulting_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11') and multiple equal(229, `report_product_sales_data`.`orgz_id`))"
},
{
"transformation": "trivial_condition_removal",
"resulting_condition": "((`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11') and multiple equal(229, `report_product_sales_data`.`orgz_id`))"
}
]
}
},
{
"table_dependencies": [
{
"table": "`report_product_sales_data`",
"row_may_be_null": false,
"map_bit": 0,
"depends_on_map_bits": [
]
}
]
},
{
"ref_optimizer_key_uses": [
{
"table": "`report_product_sales_data`",
"field": "hq_code",
"equals": "'000030'",
"null_rejecting": false
},
{
"table": "`report_product_sales_data`",
"field": "hq_code",
"equals": "'000030'",
"null_rejecting": false
},
{
"table": "`report_product_sales_data`",
"field": "orgz_id",
"equals": "229",
"null_rejecting": false
}
]
},
{
"rows_estimation": [
{
"table": "`report_product_sales_data`",
"range_analysis": {
"table_scan": {
"rows": 28276082,
"cost": 6.14e6
},
"potential_range_indices": [
{
"index": "PRIMARY",
"usable": false,
"cause": "not_applicable"
},
{
"index": "report_product_sales_data_unique",
"usable": true,
"key_parts": [
"hq_code",
"report_date",
"orgz_id",
"product_id"
]
},
{
"index": "report_product_sales_data_hq_code_orgz_id_index",
"usable": true,
"key_parts": [
"hq_code",
"orgz_id",
"report_date",
"id"
]
}
],
"setup_range_conditions": [
],
"group_index_range": {
"chosen": false,
"cause": "not_group_by_or_distinct"
},
"analyzing_range_alternatives": {
"range_scan_alternatives": [
{
"index": "report_product_sales_data_unique",
"ranges": [
"000030 <= hq_code <= 000030 AND 2018-05-11 < report_date"
],
"index_dives_for_eq_ranges": true,
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 1848962,
"cost": 2.22e6,
"chosen": true
},
{
"index": "report_product_sales_data_hq_code_orgz_id_index",
"ranges": [
"000030 <= hq_code <= 000030 AND 229 <= orgz_id <= 229 AND 2018-05-11 < report_date"
],
"index_dives_for_eq_ranges": true,
"rowid_ordered": false,
"using_mrr": false,
"index_only": false,
"rows": 37088,
"cost": 44507,
"chosen": true
}
],
"analyzing_roworder_intersect": {
"usable": false,
"cause": "too_few_roworder_scans"
}
},
"chosen_range_access_summary": {
"range_access_plan": {
"type": "range_scan",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"rows": 37088,
"ranges": [
"000030 <= hq_code <= 000030 AND 229 <= orgz_id <= 229 AND 2018-05-11 < report_date"
]
},
"rows_for_plan": 37088,
"cost_for_plan": 44507,
"chosen": true
}
}
}
]
},
{
"considered_execution_plans": [
{
"plan_prefix": [
],
"table": "`report_product_sales_data`",
"best_access_path": {
"considered_access_paths": [
{
"access_type": "ref",
"index": "report_product_sales_data_unique",
"rows": 1.85e6,
"cost": 1.82e6,
"chosen": true
},
{
//可以看到选择report_product_sales_data_hq_code_orgz_id_index这个索引时cost最小
"access_type": "ref",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"rows": 37088,
"cost": 44506,
"chosen": true
},
{
"access_type": "range",
"rows": 27816,
"cost": 51924,
"chosen": false
}
]
},
"cost_for_plan": 44506,
"rows_for_plan": 37088,
"chosen": true
}
]
},
{
"attaching_conditions_to_tables": {
"original_condition": "((`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11'))",
"attached_conditions_computation": [
{
"access_type_changed": {
"table": "`report_product_sales_data`",
"index": "report_product_sales_data_hq_code_orgz_id_index",
"old_type": "ref",
"new_type": "range",
"cause": "uses_more_keyparts"
}
}
],
"attached_conditions_summary": [
{
"table": "`report_product_sales_data`",
"attached": "((`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)) and (`report_product_sales_data`.`report_date` > '2018-05-11'))"
}
]
}
},
{
"clause_processing": {
"clause": "ORDER BY",
"original_clause": "`report_product_sales_data`.`id` desc",
"items": [
{
"item": "`report_product_sales_data`.`id`"
}
],
"resulting_clause_is_simple": true,
"resulting_clause": "`report_product_sales_data`.`id` desc"
}
},
{
"refine_plan": [
{
"table": "`report_product_sales_data`",
"pushed_index_condition": "((`report_product_sales_data`.`orgz_id` = 229) and (`report_product_sales_data`.`hq_code` = '000030') and (`report_product_sales_data`.`report_date` > '2018-05-11'))",
"table_condition_attached": "(`report_product_sales_data`.`product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938))",
"access_type": "range"
}
]
},
{
"reconsidering_access_paths_for_index_ordering": {
//到了order by id这边时,MySQL改变了执行计划,选择了PRIMARY主键索引
"clause": "ORDER BY",
"index_order_summary": {
"table": "`report_product_sales_data`",
"index_provides_order": true,
"order_direction": "desc",
"disabled_pushed_condition_on_old_index": true,
"index": "PRIMARY",
"plan_changed": true,
"access_type": "index_scan"
}
}
}
]
}
},
{
"join_execution": {
"select#": 1,
"steps": [
]
}
}
]
}
现象及修改方案
- 通过现象可以看到MySQL在order by 主键id时,limit值的大小达到了某个临界值后,改变了执行计划,选择了主键索引,但不知道具体的规则究竟是怎样。
- 既然如此,就不用order by id这个clause,改为order by report_date,因为id和report_date的大小是正相关的,而且可以走到report_product_sales_data_hq_code_orgz_id_index索引,换了个法子解决了当前这个问题。
explain select product_id, sales_num, report_date from `report_product_sales_data`
where `hq_code` = '000030'
and `orgz_id` = 229
and `product_id` in (11453,11472,11487,11446,11456,12088,11433,114170,11479,11491,11485,11482,70672,68998,154298,11435,11481,11515,122573,167938)
and `report_date` > '2018-05-11'
order by `report_date` desc limit 10;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE report_product_sales_data range report_product_sales_data_unique,report_product_sales_data_hq_code_orgz_id_index report_product_sales_data_hq_code_orgz_id_index 55 NULL 37088 Using index condition; Using where
总结
- 在order by id的情况下,MySQL由于自身的优化器选择,为了避免某些排序的消耗,可能会走非预期的PRIMARY主键索引;
- order by 和 limit 结合使用,如果where 字段,order by字段都是索引,那么有limit索引会使用order by字段所在的索引,没有limit会使用where 条件的索引;
- 对于数据量比较大,而且执行量很高的分页sql,尽可能将所有的查询字段包括在索引中,同时使用索引来消除排序;
- 多用explain查看是否使用到了最优索引;
- 利用optimizer trace查看优化器执行过程;
- 观察mysql的slow_query_log,及时做排查优化。
参考链接
- MySQL order by limit 走错索引(range->indexscan)
- MySQL5.6中ORDER BY + LIMIT 错选执行计划
- order by 导致索引选择错误
- mysql limit 扫描行数 & order by 与索引关系
- 初识5.6的optimizer trace
- mysql优化,导致查询不走索引的原因总结
MySQL ORDER BY主键id加LIMIT限制走错索引的更多相关文章
- Mysql自增主键ID重新排序方法详解
Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2 ...
- Mysql EF 触发器生成主键id 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项 ;System.Data.Entity.Infrastructure.DbUpdateConcurrencyException
http://stackoverflow.com/questions/24725261/how-to-use-a-custom-identity-column-in-sql-with-entity-f ...
- Mybatis+Mysql插入数据库返回自增主键id值的三种方法
一.场景: 插入数据库的值需要立即得到返回的主键id进行下一步程序操作 二.解决方法: 第一种:使用通用mapper的插入方法 Mapper.insertSelective(record): 此方法: ...
- MyBatis+MySQL 返回插入的主键ID
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: <insert id="i ...
- Mysql对自增主键ID进行重新排序
Mysql数据库表的自增主键ID号经过一段时间的添加与删除之后乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name ...
- mybatis与mysql插入时返回主键id的值
<insert id="insertCharge" parameterType="com.bb.bean.Rechargerecord"> < ...
- Mybatis 中获取添加的自增主键ID(针对mysql)
分享一篇博客,主要就是针对在我们使用SSM的时候,在.xml中获取<insert></insert> 时的自增主键Id,由于好久没有,这个时候使用,有点生疏,就在这里写个笔记, ...
- (转)MyBatis+MySQL 返回插入的主键ID
MyBatis+MySQL 返回插入的主键ID 需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如 ...
- Mysql数据库表的自增主键ID号乱了,需要重新排列。
Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键:ALTER TABLE `table_name` DROP `id`; 2, ...
随机推荐
- <Listener>HttpSessionListener和HttpSessionAttributeListener区别
一.HttpSessionListener HttpSessionListener是对Session的一个监听,主要监听关于Session的两个事件,即初始化和销毁.HttpSessionListen ...
- 9.2 翻译系列:数据注解特性之---Column【EF 6 Code First系列】
原文链接:http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-firs ...
- 一道面试题(C语言)
题:输入一个数,列出所有加和等于该数的式子. 分析: 以 6 为例: 从上面的分析就比较容易找到规律了. C语言代码: #include <stdio.h> int main() { in ...
- 周末,说声php的setter&getter(魔术)方法,你们辛苦了
php 作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,本文主要以setter&getter方法说明为主. 首先,咱们得知道什么叫魔术方法? 官方 ...
- 机器学习技法笔记:12 Neural Network
Roadmap Motivation Neural Network Hypothesis Neural Network Learning Optimization and Regularization ...
- 关于如何使`(a === 1 && a === 2 && a === 3)`返回`true`问题的思考
看见这个面试题目,第一反应就是在变量a取值时进行了一些改变,那就要用getter,关于存取器的介绍可以看这里 var temp = 1; Object.defineProperty(window, ' ...
- Spring.Net封闭业务类为WebService注意点和问题
最近遇到的一个项目中用到了标题所说的方法,用Spring.Net将业务类封闭成WebService供其它地方调用使用,感觉还是蛮新鲜的,于是在园子中搜了一篇园友写的文章(这里)自己也尝试着搭了一个环境 ...
- 在Windows环境中安装Neo4j
图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边( ...
- Linux编程 5 (目录重命名与移动mv,删除文件rm,目录创建mkdir删除rmdir,查看file,cat,more,tail,head)
一. 文件重命名与移动(mv) 在linux中,重命名文件称为移动(moving).mv命令可以将文件和目录移动到另一个位置或重新命名. 1.1 使用mv重命名 下面在/usr/local下面创建一个 ...
- Android中为什么需要服务?
在解释这个问题之前, 先来看一个Android系统中进程的优先级(从高到低) 前台进程(foreground process ): 一个应用程序启动, 并且可以直接相应用户的点击,触摸事件.那么这样 ...