| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
使用索引:
网管u家www.bitscn.net
| SELECT ACCOUNT_NAME, AMOUNT FROM TRANSACTION WHERE AMOUNT > 2000 ; |
下面的例子中,相同的索引列不能互相比较,这将会启用全表扫描。 网管有家www.bitscn.net
不使用索引:
中国网管联盟bitsCN.com
| SELECT ACCOUNT_NAME, AMOUNT FROM TRANSACTION WHERE ACCOUNT_NAME = NVL(:ACC_NAME,ACCOUNT_NAME); |
使用索引:
网管论坛bbs_bitsCN_com
| SELECT ACCOUNT_NAME, AMOUNT FROM TRANSACTION WHERE ACCOUNT_NAME LIKE NVL(:ACC_NAME,‘%’); |
:如果一定要对使用函数的列启用索引, ORACLE新的功能: 基于函数的索引(Function-Based Index) 也许是一个较好的方案。 网管网www_bitscn_com
| CREATE INDEX EMP_I ON EMP (UPPER(ename)); /*建立基于函数的索引*/ SELECT * FROM emp WHERE UPPER(ename) = ‘BLACKSNAIL’; /*将使用索引*/ |
2. 连接多个扫描
如果你对一个列和一组有限的值进行比较, 优化器可能执行多次扫描并对结果进行合并连接。
网管u家www.bitscn.net
举例:
网管联盟bitsCN_com
| SELECT * FROM LODGING WHERE MANAGER IN (‘BILL GATES’,‘KEN MULLER’); |
优化器可能将它转换成以下形式
网管bitscn_com
| SELECT * FROM LODGING WHERE MANAGER = ‘BILL GATES’OR MANAGER = ‘KEN MULLER’; |
网管有家www.bitscn.net
|
0
|
评论加载中…