网站首页 > 数据库 / 正文
理论上来说,数据库自动选择的执行计划应该是最佳的,或者说COST是最小的。一般如果查询条件使用了索引字段,但最终执行没有走索引而是全表扫描,就是数据库认为走索引的COST大于全表扫描。但实际执行中,由于种种原因,数据库的判断有时会有错误的情况,这时就需要我们通过ORACLE数据库提供的index hints来强制SQL使用index。
Index Hints的格式如下:
/*+ INDEX ( table [index [index]...] ) */
下面我们给出一个实际的例子:
--1.创建测试表
CREATE TABLE T_USER AS SELECT USERNAME,PASSWORD FROM DBA_USERS;
--2.创建索引
CREATE INDEX IDX_USER_USERNAME ON T_USER(USERNAME);
--3.1查询不会使用索引
SELECT * FROM T_USER U WHERE USERNAME LIKE '%PART_OF_USERNAME%';
--3.2查询使用索引
SELECT /*+INDEX(U IDX_USER_USERNAME)*/ * FROM T_USER U
WHERE USERNAME LIKE '%PART_OF_USERNAME%'
要点:
1、表名要用别名,即:以SELECT * FROM T_USER U为例, 表名要使用U,而不是T_USER。
2、/*+INDEX(U IDX_USER_USERNAME)*/不要有多余的空格,只有表别名和索引间需要加一个空格,特别是不能在/*+之间和*/之间加空格。
Tags:oracle select as
猜你喜欢
- 2024-11-26 超详细的5个Oracle数据库分组函数总结
- 2024-11-26 Oracle Database 12c SQL OCA/OCP 1Z0-071题库(1-5题)
- 2024-11-26 【Oracle】在视图中使用变量
- 2024-11-26 面试官:说说Oracle数据库result cache的原理是什么?
- 2024-11-26 注意!GROUP_CONCAT函数引发的线上问题
- 2024-11-26 Zabbix监控Oracle帐号的状态_自动发现