读书人

Oracle

发布时间: 2012-05-23 13:44:13 作者: rapoo

Oracle高手请进,在线等
默认创建的索引,是哪种类型"A. B叉树索引
B. 位图索引
C. 反转索引
D. 函数索引"

下面关于复合索引哪个是错误的"
A. 创建复合索引时不需要考虑字段顺序
B. 创建复合索引时通常把选择性好的字段放在前面
C. 复合索引字段个数尽量不要多
D. 既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引"

表T_TAB中字段status为varchar2(32),并在此字段上建个索引,下面哪个能正确使用索引"
A. SELECT NAME1 FROM T_TAB WHERE STATUS = '1'
B. SELECT NAME1 FROM T_TAB WHERE STATUS = 1
C. SELECT NAME1 FROM T_TAB WHERE STATUS||'' = '1'
D. SELECT NAME1 FROM T_TAB WHERE SUBSTR(STATUS,1,1) = '1'"

"下面关于两种写法,说法错误的是
(1)OPEN CURSOR FOR 'SELECT * FROM T_TAB WHERE TELCODE = '''|| v_telcode || '''';
(2)OPEN CURSOR FOR 'SELECT * FROM T_TAB WHERE ACCEPTDATE = :1' USING v_telcode;
A. (1)比(2)有更好的性能
B. (2)比(1)有更好的性能
C. (1)对每个号码都需要做硬解析
D. (2)对所有号码只需要做一次硬解析"

关于UNIQUE和PRIMARY KEY,下面哪个是正确的"
A. 一个表只能有一个UNIQUE
B. 一个表可以有多个PRIMARY KEY
C. PRIMARY KEY的字段必须是非空的
D. UNIQUE的字段必须是非空的"

下面关于锁说法正确的是"
A. 对于纯select语句,使用不当,也会引起锁
B. select .. from tab where id = '1' for update 是对所有记录加锁
C. 同一会话中对同一条记录修改会引起死锁
D. 不同会话交叉事务可能会导致死锁"

下面哪个说法错误"
A. 在不使用DISTINCT、UNION、ORDER BY、GROUP BY情况下,也能实现业务功能的情况,一定不要使用这些功能
B. 如果业务逻辑允许的情况下,尽量用UNION ALL代替UNION
C. 禁止对VARCHAR(2000)之类的大字段值进行ORDER BY、DISTINCT、GROUP BY、UNION之类的操作
D. 执行UNION ALL也会引起排序操作"

按照规范,下面关于分区表中建索引正确是"
A. 应为本地索引
B. 应为全局索引
C. 既可以本地索引,也可以全局索引
D. 以上都不对"

下面关于hints说法错误的是"
A. 常用/*+ .. */ 表示
B. 当hints语法错误时,sql语句无法执行
C. 当hints指定的索引被删除后,hints将会失去效果
D. 只有当索引不能正确使用时,才能使用hints"


[解决办法]
关注中。。。。。
[解决办法]

SQL code
默认创建的索引,是哪种类型    "A. B叉树索引B. 位图索引C. 反转索引D. 函数索引"------------A下面关于复合索引哪个是错误的    "A. 创建复合索引时不需要考虑字段顺序B. 创建复合索引时通常把选择性好的字段放在前面C. 复合索引字段个数尽量不要多D. 既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引"-------------A表T_TAB中字段status为varchar2(32),并在此字段上建个索引,下面哪个能正确使用索引    "A. SELECT NAME1 FROM T_TAB WHERE STATUS = '1'B. SELECT NAME1 FROM T_TAB WHERE STATUS = 1C. SELECT NAME1 FROM T_TAB WHERE STATUS||'' = '1'D. SELECT NAME1 FROM T_TAB WHERE SUBSTR(STATUS,1,1) = '1'"----------A分析:B oracle使用了隐式类型的转换,索引失效,C,D等效于函数。"下面关于两种写法,说法错误的是(1)OPEN CURSOR FOR 'SELECT * FROM T_TAB WHERE TELCODE = '''|| v_telcode || '''';(2)OPEN CURSOR FOR 'SELECT * FROM T_TAB WHERE ACCEPTDATE = :1' USING v_telcode;A. (1)比(2)有更好的性能B. (2)比(1)有更好的性能C. (1)对每个号码都需要做硬解析D. (2)对所有号码只需要做一次硬解析"-------------A分析:C,D 硬编码如果没有指定cursor_shared,每次都需要解析.如果使用绑定变量只解析一次
[解决办法]
SQL code
关于UNIQUE和PRIMARY KEY,下面哪个是正确的    "A. 一个表只能有一个UNIQUEB. 一个表可以有多个PRIMARY KEYC. PRIMARY KEY的字段必须是非空的D. UNIQUE的字段必须是非空的"-------C分析:unique和primary 的唯一区别是:unique可以为空下面关于锁说法正确的是    "A. 对于纯select语句,使用不当,也会引起锁B. select .. from tab where id = '1' for update 是对所有记录加锁C. 同一会话中对同一条记录修改会引起死锁D. 不同会话交叉事务可能会导致死锁"-------D分析:B,行锁,C,如果事务时间不交叉肯定没问题.A.是一定会引起锁,不过是共享锁。下面哪个说法错误    "A. 在不使用DISTINCT、UNION、ORDER BY、GROUP BY情况下,也能实现业务功能的情况,一定不要使用这些功能B. 如果业务逻辑允许的情况下,尽量用UNION ALL代替UNIONC. 禁止对VARCHAR(2000)之类的大字段值进行ORDER BY、DISTINCT、GROUP BY、UNION之类的操作D. 执行UNION ALL也会引起排序操作"---------D分析:很明显union 才排序按照规范,下面关于分区表中建索引正确是    "A. 应为本地索引B. 应为全局索引C. 既可以本地索引,也可以全局索引D. 以上都不对"---------C分析:没什么好说的下面关于hints说法错误的是    "A. 常用/*+ .. */ 表示B. 当hints语法错误时,sql语句无法执行C. 当hints指定的索引被删除后,hints将会失去效果D. 只有当索引不能正确使用时,才能使用hints"--------D分析:hint索引又叫强制索引
[解决办法]
1 b
2 a
3 a
4 a
5 c
6 c
7 d
8 c
9 d
------解决方案--------------------


最后一题明显是 【 B 】 啊!
hint错误会导致SQL不执行吗?
hint在注释里面呀
[解决办法]
1.A 2.A 3.A 4.A 5.C 6.D 7 A 8 A 9 C
[解决办法]
A A A A C D D C B
[解决办法]
正常情况下选择 为:A A A A C D D C B
但如下问题需要讨论
"下面关于两种写法,说法错误的是
(1)OPEN CURSOR FOR 'SELECT * FROM T_TAB WHERE TELCODE = '''|| v_telcode || '''';
(2)OPEN CURSOR FOR 'SELECT * FROM T_TAB WHERE ACCEPTDATE = :1' USING v_telcode;
A. (1)比(2)有更好的性能 -- 明显错误B. (2)比(1)有更好的性能 -- 能绝对吗,若ACCEPTDATE分布不均时,1上说不定走好的执行计划呢C. (1)对每个号码都需要做硬解析
D. (2)对所有号码只需要做一次硬解析" --真的只做一次硬解析吗?输入 aa 与 输入aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 的时候一样吗

按照规范,下面关于分区表中建索引正确是 "
A. 应为本地索引
B. 应为全局索引
C. 既可以本地索引,也可以全局索引
D. 以上都不对"
---------C
分析:没什么好说的,?
其实这个才是我们应该考虑的问题,虽然oracle支持在分区表中建全局索引、本地索引两种情况,但是从数据库维护方便的角度看,真的有必要使用这两种情况吗?借此机会我也想看看大家系统是怎么处理的,我们的系统是要求分区表上只能建本地索引,不然每次删除分区都要重建索引,那样成本太高了


读书人网 >oracle

热点推荐