SQL优化 总结 精简
来源:互联网 发布:在淘宝上面卖什么好 编辑:程序博客网 时间:2024/06/05 05:51
索引:
考虑在 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优化精简版
- SQL 优化 (某篇的精简版)
- SQL 优化 (某篇的精简版)
- oracle sql的优化方法(精简)
- C#代码精简优化技巧总结
- sql优化总结
- oracle-sql优化总结
- SQl 优化收集、总结
- sql优化总结
- oracle sql优化总结
- Oracle SQL优化 总结
- Oracle SQL优化 总结
- Oracle SQL优化 总结
- sql优化原则总结
- sql性能优化总结
- SQL优化个人总结
- sql 优化总结
- [BZOJ]1104: [POI2007]洪水pow
- public static void main(String[] args){} 关于Java main()方法
- Spring Boot实战之项目搭建(二)
- clone()方法、深复制和浅复制
- 使用C#操作word模板
- SQL优化 总结 精简
- Android使用OkHttp携带Cookie请求数据,并对Cookie进行持久化管理
- 什么是钩子方法?
- 【Nginx】监控
- 检测一个链表是否有环
- SAP HANA学习笔记
- 设计模式—装饰者模式
- Muduo网络编程 时间轮 Timing wheel 踢掉空闲连接
- 内连接、外连接的区别?