mysql join索引組合優化,效能提公升百倍

2021-09-11 08:32:20 字數 1236 閱讀 2878

組合索引怎麼用比較快:

在join的時候需要三個on條件 `organization`,`policy_type`,`version` ,乙個where條件

-- join 條件 where 條件 

on a.organization=b.organization and a.policy_type=b.policy_type and a.version= b.version

where a.version='20190225'

考慮建立如下索引:

a表索引:(15w row,目標資料10w)

key `with_ncd_premium_ratios_index` (`with_ncd_premium_ratios`),

key `vbdl_premium_score_mid_calc_v` (`version`),

key `vbdl_premium_score_mid_calc_org_pt_v` (`organization`,`policy_type`)

b表索引:(200 row)

primary key (`id`),

key `vbdl_premium_score_base_ratio_v` (`version`),

key `vbdl_premium_score_base_ratio_org_pt_v` (`organization`,`policy_type`) 

join update 需要60秒時間

根據業務需求,進一步嘗試優化索引 ,將索引拆分:

a.表,b.表索引一致 ,刪除更新欄位的索引:with_ncd_premium_ratios_index

key `vbdl_premium_score_base_ratio_v` (`version`),

key `vbdl_premium_score_base_ratio_org_pt_v` (`organization`,`policy_type`)

key `vbdl_premium_score_mid_calc_v` (`version`),

key `vbdl_premium_score_mid_calc_org_pt_v` (`organization`,`policy_type`)

此次優化有只需要0.6秒,效能提公升100倍,索引加的好,烏龜也能跑.

做到10萬級資料join更新,600ms響應.

Mysql join語句的優化

mysql4.1開始支援sql的子查詢。這個技術可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的sql操作,同時也可以避免事務或者表鎖死,並且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率...

mysql JOIN優化 清除filesort

1 顯示inner join 和 隱式inner join 顯示 select from a inner join b on a.mobile b.mobile 隱式 select from a inner join b where a.mobile b.mobile 10萬資料的查詢用時幾乎相等。...

MySQL join 連表查詢索引問題

首先先建立兩個臨時表,並加一條基礎資料進去 create table user id int auto increment comment 自增主鍵 primary key,name varchar 30 null comment 使用者名稱 create time datetime notnull...