数据库方面一直是自己的薄弱项,现在以本文慢慢积累总结oracle sql优化的一些技巧。 1.首先大家很容易想到的一切优化技巧--索引,索引有啥用?索引在表数据量很大时添加索引确实能加快查询速度,通过索引查询能很好地避免全表扫描。 但应该也要注意的时这是在数据量较大的时候。同时数据较小时,反而浪费索 ...
分类:
数据库 时间:
2017-03-23 00:54:04
阅读次数:
225
1.应该避免的索引失效的情况 规则1:全值匹配我最爱 第三种效果最好~ 用到了我们创建的索引,下面再看一种情况 全表扫描!!我们看到,索引竟然失效了 单独使用name就不会使索引失效,由此引入规则2 规则2:最佳左前缀法则,即如果索引了多列,要遵守最佳左前缀法则,即查询必须从索引的最左前列开始,并且 ...
分类:
数据库 时间:
2017-03-19 01:04:21
阅读次数:
197
网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。 这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。 1.对查询进行优化,要尽量避免全表扫描,首先应 ...
分类:
数据库 时间:
2017-03-17 20:53:42
阅读次数:
297
第一阶段:1,一定要正确设计索引2,一定要避免SQL语句全表扫描,所以SQL一定要走索引(如:一切的 > < != 等等之类的写法都会导致全表扫描)3,一定要避免 limit 10000000,20 这样的查询4,一定要避免 LEFT JOIN 之类的查询,不把这样的逻辑处理交给数据库5,每个表索引 ...
分类:
数据库 时间:
2017-03-15 11:45:44
阅读次数:
293
1.建立索引 2.避免全表扫描 避免使用is null, is not null,这样写会放弃该字段的索引。 如果会出现这种情况,尽量在设计表的时候设置默认值 比较操作符中!= <>等避免使用,or 避免使用,可以使用union all进行替代 少用 in not int like通配符尽量将通配符 ...
分类:
数据库 时间:
2017-03-13 12:32:45
阅读次数:
198
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引 ...
分类:
数据库 时间:
2017-03-12 18:19:27
阅读次数:
188
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num ...
分类:
数据库 时间:
2017-03-11 21:59:00
阅读次数:
264
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...
分类:
数据库 时间:
2017-03-08 10:51:17
阅读次数:
220
一、如果表定义的是varchar字段,传入的是数字,则会发生隐式转换。 1、表DDL 2、传int的sql 3、传字符串的sql 仔细看下表结构,rid的字段类型: 而用户传入的是int,这里会有一个隐式转换的问题,隐式转换会导致全表扫描。 把输入改成字符串类型,执行计划如下,这样就会很快了。 此外 ...
分类:
数据库 时间:
2017-03-02 13:04:55
阅读次数:
226
对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引: .尝试下面的技巧以避免优化器错选了表扫描: · 使用ANALYZE TABLE tbl_name为扫描的表更新关键字分布。 · 对扫描的表使用FORCE INDEX告知MySQL,相对于使用给定的索 ...
分类:
数据库 时间:
2017-02-28 15:10:11
阅读次数:
244