組合索引怎麼用比較快:
在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...