背景及現(xiàn)象
- report_product_sales_data表數(shù)據(jù)量2800萬(wàn)故俐;
- 經(jīng)測(cè)試胁澳,在當(dāng)前數(shù)據(jù)量情況下鹿驼,order by主鍵id欲低,limit最大到49的時(shí)候可以用到索引report_product_sales_data_hq_code_orgz_id_index,大于49時(shí)就走PRIMARY主鍵索引畜晰。
表結(jié)構(gòu)
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 '銷(xiāo)售數(shù)量',
`report_date` date NOT NULL COMMENT '報(bào)表日期',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '狀態(tài): 0.未日結(jié)砾莱,1.已日結(jié)',
`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='商品日營(yíng)業(yè)數(shù)據(jù)表';
Explain命令查看執(zhí)行計(jì)劃
-- 批量查詢(xún)耗時(shí)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結(jié)果如下
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
-- 批量查詢(xún)耗時(shí)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結(jié)果如下
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
開(kāi)啟優(yōu)化器跟蹤查看MySQL優(yōu)化過(guò)程
-- 開(kāi)啟優(yōu)化器跟蹤
set session optimizer_trace='enabled=on';
-- 在執(zhí)行完查詢(xún)語(yǔ)句后,在執(zhí)行以下的select語(yǔ)句可以查看具體的優(yōu)化器執(zhí)行過(guò)程
select * from information_schema.optimizer_trace;
-- 對(duì)于這條走了預(yù)期report_product_sales_data_hq_code_orgz_id_index索引的查詢(xún)凄鼻,我們看下優(yōu)化器的執(zhí)行過(guò)程
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這個(gè)索引時(shí)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這邊時(shí)腊瑟,MySQL也沒(méi)有改變執(zhí)行計(jì)劃,還是選擇了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>"
}
}
]
}
}
]
}
-- 對(duì)于這條走了非預(yù)期PRIMARY主鍵索引的查詢(xún)块蚌,我們看下優(yōu)化器的執(zhí)行過(guò)程
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這個(gè)索引時(shí)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這邊時(shí)闰非,MySQL改變了執(zhí)行計(jì)劃,選擇了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": [
]
}
}
]
}
現(xiàn)象及修改方案
- 通過(guò)現(xiàn)象可以看到MySQL在order by 主鍵id時(shí)峭范,limit值的大小達(dá)到了某個(gè)臨界值后财松,改變了執(zhí)行計(jì)劃,選擇了主鍵索引纱控,但不知道具體的規(guī)則究竟是怎樣辆毡。
- 既然如此,就不用order by id這個(gè)clause甜害,改為order by report_date舶掖,因?yàn)閕d和report_date的大小是正相關(guān)的,而且可以走到report_product_sales_data_hq_code_orgz_id_index索引尔店,換了個(gè)法子解決了當(dāng)前這個(gè)問(wèn)題眨攘。
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
總結(jié)
- 在order by id的情況下主慰,MySQL由于自身的優(yōu)化器選擇,為了避免某些排序的消耗期犬,可能會(huì)走非預(yù)期的PRIMARY主鍵索引河哑;
- order by 和 limit 結(jié)合使用,如果where 字段龟虎,order by字段都是索引,那么有l(wèi)imit索引會(huì)使用order by字段所在的索引沙庐,沒(méi)有l(wèi)imit會(huì)使用where 條件的索引鲤妥;
- 對(duì)于數(shù)據(jù)量比較大,而且執(zhí)行量很高的分頁(yè)sql拱雏,盡可能將所有的查詢(xún)字段包括在索引中棉安,同時(shí)使用索引來(lái)消除排序;
- 多用explain查看是否使用到了最優(yōu)索引铸抑;
- 利用optimizer trace查看優(yōu)化器執(zhí)行過(guò)程贡耽;
- 觀察mysql的slow_query_log,及時(shí)做排查優(yōu)化鹊汛。
參考鏈接