SQL优化经验
1.对查询进行优化,尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4、应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
5.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
6.以%开头的like无法使用到索引
SELECT * FROM t WHERE name LIKE '%de%'; #无法使用到索引
SELECT * FROM t WHERE name LIKE 'de%'; #使用到索引
7、很多时候用 exists 代替 in 是一个好的选择
8、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
9、字段使用函数,将无法使用索引
例:SELECT * FROM t WHERE YEAR(d) >= 2016;
由于MySQL不像Oracle那样支持函数索引,即使d字段有索引,也会直接全表扫描。
应改为-->SELECT * FROM t WHERE d >= '2016-01-01';
http://www.cnblogs.com/linjiqin/p/5714567.html
相关文章
- sql server 复制,镜像,日志传输及故障转移集群区别
- [sql]大型网站MySQL深度优化揭秘
- Centos 7.3下 Linux For SQL Server安装及配置介绍
- SQL Server 内置转换函数介绍
- mysql 分析explain命令调优执行sql的计划2
- mysql 优化sql
- 利用AWR 查看SQL 执行计划
- 《sql---教学反馈系统-阶段项目2》
- 做测试不会 SQL?超详细的 SQL 查询语法教程来啦
- SQL优化器原理-Metadata
- SQL Server查询性能优化——堆表、碎片与索引(二)
- SQL性能优化(Oracle)
- SQL优化一(SQL使用技巧)
- 数据库优化 - SQL优化
- mysql5.7官网直译SQL语句优化--select语句优化
- SQL索引
- 精通Oracle 10g PL/SQL编程 pdf
- SQL Server 配置管理器基本使用
- druid发布0.2.1版,增加sql统计的merge功能。
- 阿里一面:SQL 优化有哪些技巧?
- 美团一面:如何优化慢SQL?
- sql优化
- PostgreSQL SQL优化之NOT IN问题
- SQL Server+Hadoop 变身大数据解决方案
- UData查询引擎优化-如何让一条SQL性能提升数倍
- 重置SQL Server连接池
- 每天一道大厂SQL题【Day14】微众银行真题实战(四)
- SQL 经典五十道题
- 记一次Spark引擎执行Sql超时优化
- log4j.xml简单配置实现在控制台打印sql执行语句【加注释】
- oracle 11g亿级复杂SQL优化一例(数量级性能提升)
- sql 百万级数据库优化方案