SQL性能优化思路
1. 尽可能把数据的存储和计算放⼊Memory⽽不是Disk,且减少IO操作,⽐如运⽤Redis等缓存技术
2. 对数据表进⾏精⼼设计,特别是⼤数据表,对常⽤数据字段进⾏适当的冗余,尽可能避免分表导致的Join查询,即使⾮Join不可也是⼤表和⼩表Join,⽽不是⼀堆⼤表之间Join
3. 对常⽤查询字段,特别是作为Join on条件的字段,必须建⽴索引
4. 对⼤数据集结果做条件限制,仅返回其⼩范围⼦集,例如运⽤Limit或Where进⾏条件过滤
N张表join,然后select如何优化?
1.在join表中的on列上加上索引
create index i_cr_data_dic on cr_data_dic(data_code);
2.结果⽤limit进⾏限制,⽐如limit 1,10
对select count(*) from bigTable,基于上⾯的索引优化后,这个还是特别耗时,特别慢,怎么办呢?
只能从⾛对结果集进⾏条件限制的思路,⽐如加上where条件,创建时间为最近1⽉,其实把整个历史上所有数据都统计⼀遍,通常是不需要的
select count(*) from
"pre_app_main" "pam" left join "pre_app_customer" "pac" on("pam"."id" = "pac"."app_id")
sql优化的几种方式left join "pre_app_staff_only" "paso" on("pam"."id" = "paso"."app_id")
left join "pre_app_loan" "pal" on("pam"."id" = "pal"."app_id")
left join "cr_data_dic" "cdd1" on("pam"."pre_app_status" = "cdd1"."data_code")
left join "cr_data_dic" "cdd2" on("pam"."app_status" = "cdd2"."data_code")
left join "app_city" "act" on(concat('PREQAPP_WECHAT_',"pam"."apply_city_code") = "act"."city_code")
ated_time > DATE_SUB(NOW(), INTERVAL 1 MONTH)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。