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")
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")
where pam.created_time > DATE_SUB(NOW(), INTERVAL 1 MONTH)
最新文章
- error: insufficient permissions for device: verify udev rules
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
- ServletInputStream的重复读取(多次读取)(转)
- I/O复用:异步聊天
- BZOJ 2228 礼物(gift)(最大子长方体)
- 适配iOS10以及Xcode8-b
- C语言的左位移能不能超过8位?
- 用法简单的图片和视频播放的框架Demo
- SQL Server 系统时间
- Mysql数据库中的EXISTS和NOT EXISTS
- js去除首尾空格
- Manjaro安装配置笔记
- POI richText和html的转换案例
- Vue自动化工具(Vue-CLI)的安装
- Spring JDBC StoredProcedure类示例
- 全局 SqlConnection
- 【Android】3.9 覆盖物功能
- bson.errors.InvalidStringData: strings in documents must be valid UTF-8
- CC2530zigbee技术-简介协议栈
- mysql概念特性和优化
热门文章
- 【web 安全测试Tools】BurpSuite 1.7.32及注册机【无后门版】
- java面试考点-面试准备
- APK在Android Studio下如何签名
- 搭建一个超好用的 cmdb 系统
- 在使用pandas 0.23.4对日期进行分组排序时报错
- Jmeter CSV操作
- PO,VO,DAO,BO,POJO之间的区别与解释
- centos 7.2安装git2.x版本
- 某 游戏公司 php 面试题
- 病毒 | wordpress网站内容被篡改、自动跳转、变全英文的解决办法