数据库中创建索引怎么查询写出select语句
创建表
create table user(id number(10),name varchar(109));
查询表
select * from user where id = 1;
创建索引
create index user_id(id);
1、写出查询user表中的数据按照索引查询,怎么写
???
2、查询的时候判断表是否有索引
???
用sql写出来,请教大师解决
数据库 索引 中创 select SQL
[解决办法]
1、写出查询user表中的数据按照索引查询,怎么写
???
select * from user where id = 1;
就是这么写。。但未必会走索引
2、查询的时候判断表是否有索引
???
不是看sql,而是看执行计划。。。。
[解决办法]
1. 表名不要用user 这是关键字。
2. 创建索引要加 on某个表名,你那样是创不出来的。
3. 写出查询user表中的数据按照索引查询,怎么写
楼主是想用hint来强制查询走 索引 么?
4、查询的时候判断表是否有索引
select index_name from user_indexes where table_name = '你的表名'
[解决办法]
执行开起来看一下就不就知道了吗?
hr@ORCL> select * from t where y='9999a';
hr@ORCL> select * from t where y='9999a';
Execution Plan
----------------------
Plan hash value: 2903481642
---------------------------------------------------
[解决办法]
Id
[解决办法]
Operation
[解决办法]
Name
[解决办法]
Rows
[解决办法]
Bytes
------解决方案--------------------
Cost (%CPU)
[解决办法]
Time
[解决办法]
---------------------------------------------------
[解决办法]
0
[解决办法]
SELECT STATEMENT
[解决办法]
[解决办法]
1
[解决办法]
11
[解决办法]
2 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
1
[解决办法]
TABLE ACCESS BY INDEX ROWID
[解决办法]
T
[解决办法]
1
[解决办法]
11
[解决办法]
2 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
* 2
[解决办法]
INDEX RANGE SCAN
------解决方案--------------------
IDX_T_Y
[解决办法]
1
[解决办法]
[解决办法]
1 (0)
[解决办法]
00:00:01
[解决办法]
---------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("Y"='9999a')
[解决办法]
格式真槽糕
hr@ORCL> select * from t where y='9999a';
Execution Plan
----------------------
Plan hash value: 2903481642
---------------------------------------------------
[解决办法]
Id
[解决办法]
Operation
[解决办法]
Name
[解决办法]
Rows
[解决办法]
Bytes
[解决办法]
Cost (%CPU)
[解决办法]
Time
[解决办法]
---------------------------------------------------
[解决办法]
0
[解决办法]
SELECT STATEMENT
------解决方案--------------------
[解决办法]
1
[解决办法]
11
[解决办法]
2 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
1
[解决办法]
TABLE ACCESS BY INDEX ROWID
[解决办法]
T
[解决办法]
1
[解决办法]
11
[解决办法]
2 (0)
[解决办法]
00:00:01
[解决办法]
[解决办法]
* 2
[解决办法]
<span style="color: #FF0000;"><span style="font-size: 18px;">INDEX RANGE SCAN</span></span>
[解决办法]
IDX_T_Y
[解决办法]
1
[解决办法]
[解决办法]
1 (0)
[解决办法]
00:00:01
[解决办法]
---------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("Y"='9999a')
[解决办法]
上面都看不了 其实就这个 TABLE ACCESS BY INDEX ROWID 回表操作
[解决办法]
用index hints就可以强制走索引
select /*+ index(user user_id) */ * from user where id=1;