SQL优化技巧和索引的认识
2013-04-27 09:43
281 查看
现在简单的举几个例子
Where子句中有“!=”将不使用索引
select account_name from test where amount != 0 (不使用)
select account_name from test where amount > 0 (使用)
Where条件中对字段增加处理函数将不使用该列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用)
select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用)
避免在索引列上使用IS NULL和 IS NOT NULL
select * from emp where dept_code is null (不使用)
select * from emp where dept_code is not null (使用)
通配符% 的使用
select * from emp where name like '%A' (不使用索引)
select * from emp where name like 'A%' (使用索引)
在含有子查询的SQL语句中,要特别注意减少对表的查询.例子:
SELECT EMP_NO FROM EMP WHERE (GROUP,NAME) = ( SELECT
COLUMN1,COLUMN2 FROM TEST WHERE TEST_ID = 604)
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行
在java代码中用到preparedStatement的時候尽量少用连接符“+”连接字符串!
可以通过建立反向索引..让
select * from emp where name like '%A'
也使用索引 好像我們一般不用反向索引 再説 reverse索引一般用于ops环境
另外如果建立了组合索引 但是where查询条件字段只有组合索引字段其中一个 索引应该也不使用
原地址:http://www.javaeye.com/topic/181544
Where子句中有“!=”将不使用索引
select account_name from test where amount != 0 (不使用)
select account_name from test where amount > 0 (使用)
Where条件中对字段增加处理函数将不使用该列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用)
select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用)
避免在索引列上使用IS NULL和 IS NOT NULL
select * from emp where dept_code is null (不使用)
select * from emp where dept_code is not null (使用)
通配符% 的使用
select * from emp where name like '%A' (不使用索引)
select * from emp where name like 'A%' (使用索引)
在含有子查询的SQL语句中,要特别注意减少对表的查询.例子:
SELECT EMP_NO FROM EMP WHERE (GROUP,NAME) = ( SELECT
COLUMN1,COLUMN2 FROM TEST WHERE TEST_ID = 604)
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行
在java代码中用到preparedStatement的時候尽量少用连接符“+”连接字符串!
可以通过建立反向索引..让
select * from emp where name like '%A'
也使用索引 好像我們一般不用反向索引 再説 reverse索引一般用于ops环境
另外如果建立了组合索引 但是where查询条件字段只有组合索引字段其中一个 索引应该也不使用
原地址:http://www.javaeye.com/topic/181544
相关文章推荐
- SQL语句技巧_索引的优化_慢查询日志开启_root密码的破解
- SQL索引优化3(10条SQL技巧)
- 或许你不知道的10条SQL技巧((sql 优化 sql索引优化))
- SQL索引优化1(索引的概念及技巧)
- SQL 数据库优化 索引,SQL索引优化-技巧
- 如何在 SQL 数据库优化 索引,SQL索引优化-技巧
- SQL 数据库优化 索引,SQL索引优化-技巧
- SQL优化(SQL TUNING)可大幅提升性能的实战技巧之一——让计划沿着索引跑
- 在SQL Server中使用索引的技巧及sql索引优化策略
- SQL 数据库优化 索引,SQL索引优化-技巧
- 数据库 基于索引的SQL语句优化之降龙十八掌(转)
- SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)
- SQL优化案例分享--联合索引
- Oracle SQL性能优化技巧大总结
- SQL 优化之索引
- 索引和SQL查询优化(待补充)
- SQL 数据优化索引建suo避免全表扫描
- SQL语句优化技巧
- 13个SQL优化技巧
- 查找前十条性能差的sql,优化索引