因为like参数使用的非常频繁,因此如果能够对like子句使用索引,将很高的提高查询的效率。
例:
select * from city where name like ‘%S%’;
以上查询的执行计划用了全表扫描(TABLE ACCESS FULL),如果能够修改为:
select * from city where name like ‘S%’;
那么查询的执行计划将会变成(INDE...
分类:
数据库 时间:
2015-01-07 09:22:01
阅读次数:
231
前面谈到任何对列的操作都可能导致全表扫描,例如:
select * from emp where substr(ename,1,2)=’SM’;
但是这种查询又经常使用,我们可以创建一个带有substr函数的基于函数的索引,
create index emp_ename_substr on eemp ( substr(ename,1,2) );
这样在执行上面的查询语句时,这个基于函数的索...
分类:
数据库 时间:
2015-01-07 09:21:30
阅读次数:
163
增加查询的范围限制,避免全范围的搜索。
例:以下查询表record 中时间ActionTime小于2001年3月1日的数据:
select * from record where ActionTime
查询计划表明,上面的查询对表进行全表扫描,如果我们知道表中的最早的数据为2001年1月1日,那么,可以增加一个最小时间,
使查询在一个完整的范围之内。修改如下:
select * fr...
分类:
数据库 时间:
2015-01-05 11:20:13
阅读次数:
215
任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等式的右边,
甚至去掉函数。
例1:下列SQL条件语句中的列都建有恰当的索引,但30万行数据情况下执行速度却非常慢:
select * from record where substrb(CardNo,1,4)='5378'(13秒)
select * from...
分类:
数据库 时间:
2015-01-05 09:29:12
阅读次数:
207
需要注意的是,尽量避免潜在的数据类型转换。
如将字符型数据与数值型数据比较,ORACLE会自动将字符型用to_number()函数进行转换,从而导致全表扫描。
例2:表tab1中的列col1是字符型(char),则以下语句存在类型转换:
select col1,col2 from tab1 where col1>10;
应该写为:
select col1,col2 from tab1 ...
分类:
数据库 时间:
2015-01-05 09:27:29
阅读次数:
183
在我们平常的SQL查询中,其实我们有许多应该注意的原则,以来实现SQL查询的优化,本文将为大家介绍30条查询优化原则。首先应注意的原则1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导...
分类:
数据库 时间:
2015-01-04 17:03:39
阅读次数:
270
与表访问相关的执行计划Oracle数据库里面与表访问有关的的两种方法:全表扫描和ROWID扫描。反应在执行计划上,与全表扫描对应的执行计划中的关键字是“TABLEACCESSFULL”,与ROWID扫描对应的执行计划中的关键字是"TABLEACCESSBYUSERROWID"或“TABLEACCESSBYINDEXROWID”.我们来..
分类:
数据库 时间:
2014-12-27 06:46:26
阅读次数:
362
索引是用来加速查询的。有了索引之后,数据库不必进行全表扫描,只需先在索引中查找,再根据找到的索引查找数据。MongoDB的索引几乎和传统关系型数据库一样。 创建索引 创建索引是在相应的集合中使用ensureIndex()方法。 >db.user.ensureIndex({"username":1})...
分类:
数据库 时间:
2014-12-21 20:39:59
阅读次数:
190
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL...
分类:
数据库 时间:
2014-12-20 18:09:55
阅读次数:
237
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数...
分类:
数据库 时间:
2014-12-18 13:35:04
阅读次数:
239