SQL优化 总结 精简
索引:
考虑在 where 及 order by 涉及的列上建立索引
经常同时存取多列,且每列都含有重复值可考虑建立组合索引,且查询越频繁的字段放前面
按需使用聚集与非聚集索引,聚集不适合频繁更新、适合范围查询( > ,< ,> =,< =)和 order by、group by ,注意复合索引的顺序,选择性高的建议放前面
不要在数据选择性不高的字段建立索引
索引控制在6个以内为好
大字段可以考虑使用前缀索引
去除冗余索引
where子句的操作:
尽量避免在 where 子句中对字段进行 null 值判断、!=或<>操作符、 or 来连接条件、in 和 not in、like时%在前面、使用参数,如where num=@num、
表达式操作,如where num/2=100、函数操作(“=”左边进行函数),如substring(name,1,3)='abc';#name、算术运算或其他表达式运算
exists 代替 in
一个查询中避免多个范围查询
where子句中的数据扫描不超过表总数据量的30%
表结构:
能用数字和枚举类型就不用其他类型
使用 varchar/nvarchar 代替 char/nchar
字段尽可能的使用 NOT NULL
把IP地址存成 UNSIGNED INT
固定长度的表会更快
越小的列会越快
临时表:
能用变量就不要用临时表
避免频繁创建和删除临时表
需要重复引用大型表或常用 表中的某个数据集时可用临时表
新建临时表时,如果一次性插入数据量很大,用 select into 代替 create table
注意删除临时表,先 truncate table ,然后 drop table
其他:
不使用select *
大量数据时不适合用游标处理
在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF
定期ANALYZE、CHECK 、OPTIMIZE 表
EXPLAIN 你的 SELECT 查询
善用LIMIT 避免一次性查询大量数据
在Join表的时候使用相同类型的列,并将其索引
千万不要 ORDER BY RAND()
除了关联表 永远为每张表设置一个ID
Prepared Statements小心“永久链接”
尽量避免大事务操作
拆分大的 DELETE 或 INSERT 或 insert .. into .. select.. 语句 减少锁表时间
使用orm
使用缓存,例如一级缓存,二级缓存、redis、memcace分布式
合理用运分库、分表与分区表提高数据存放和提取速度
SQL优化 总结 精简的更多相关文章
- 转://从一条巨慢SQL看基于Oracle的SQL优化
http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...
- 从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)
本文根据DBAplus社群第110期线上分享整理而成,文末还有好书送哦~ 讲师介绍 丁俊 新炬网络首席性能优化专家 SQL审核产品经理 DBAplus社群联合发起人.<剑破冰山-Oracle开发 ...
- SQL优化:索引的重要性
开篇小测验 下面这样一个小SQL 你该怎么样添加最优索引 两个表上现在只有聚集索引 bigproduct 表上已经有聚集索引 ProductID bigtransactionhistory 表上已经有 ...
- Oracle SQL优化进阶学习
引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM task_log order by ...
- 对SQL 优化,提升性能!
对SQL 进行优化能够有效提高SQL 语句的执行效率,降低系统资源开销,是开发者提高后端系统处理能力的首选方案. 新产品上线后,随着运营推广活动的开始,业务进入快速增长期,数据库作为后端系统唯一或者主 ...
- SQL优化案例—— RowNumber分页
将业务语句翻译成SQL语句不仅是一门技术,还是一门艺术. 下面拿我们程序开发工程师最常用的ROW_NUMBER()分页作为一个典型案例来说明. 先来看看我们最常见的分页的样子: WITH CTE AS ...
- sql 优化
1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处 ...
- SQL 优化总结
SQL 优化总结 (一)SQL Server 关键的内置表.视图 1. sysobjects SELECT name as '函数名称',xtype as XType FROM s ...
- (转)SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
随机推荐
- Linux进程同步之POSIX信号量
POSIX信号量是属于POSIX标准系统接口定义的实时扩展部分.在SUS(Single UNIX Specification)单一规范中,定义的XSI IPC中也同样定义了人们通常称为System V ...
- VS2012下基于Glut 矩阵变换示例程序2:
在VS2012下基于Glut 矩阵变换示例程序:中我们在绘制甜圈或者圆柱时使用矩阵对相应的坐标进行变换后自己绘制甜圈或者圆柱.我们也可以使用glLoadMatrixf.glLoadMatrixd载入变 ...
- 关于在freemarker模板中遍历数据模型List<JavaBean>的经验
本文采用简单的servlet作为后台处理数据的工具,前台使用freemarker的ftl模板作为输出工具,简单说明怎样将封装有实体类对象的List集合注入到ftl模板中并且成功的在遍历显示出来,之前在 ...
- github 自学文档 希望可以给初学的人一些帮助
一 .git的安装 windows下面的安装:https://git-for-windows.github.io 从这里下载完全无脑安装. 安装完成后,在开始菜单里找到"Git" ...
- Dell-R730 【Pxe+dhcp+ftp+tftp+Kickstart+CentOs6.6】
IP:10.104.0.101 [root@localhost network-scripts]# cat ifcfg-em1 [root@localhost network-scripts]# ip ...
- PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例
问:什么叫WAMP?答:Windows下的Apache+Mysql+PHP,称之为WAMP. 本文案例采用的PHP集成环境是我自己开发的纯绿色版WAMP软件(PHPWAMP). 我在这款集成环境里集成 ...
- [HMLY]10.iOS中block的基础用法
本文简介 本章不会对Block做过多的实现研究.只是讲解基本的用法.纯粹基础知识.结合实际项目怎么去做举例.Block使用场景,可以在两个界面的传值,也可以对代码封装作为参数的传递等.用过GCD就知道 ...
- Cstring 的用法
CString位于头文件afx.h中. 这篇文章就来讨论这些技巧. 使用CString可以让你对字符串的操作更加直截了当.这篇文章不是CString的完全手册,但囊括了大部分常见基本问题. 这篇文章包 ...
- 明天opp¥this xuexi 资料在高中一班
明天opp¥this xuexi 资料在高中一班
- cocoaPods第三方库使用详解
终端上安装了cocoapods后,打开终端输入下面命令: cd /Users/Sivek_lin/Desktop/AFNTest/AFNTest touch podfile pod search af ...