Oracle 11g中有INDEX_COL这个Hint吗?

    当我们进行索引的联机维护(重命名, 改结构, 或删除)时, 会让现有的SQL走了错误的路径, 因为在现有的索引的HINT中一般都直接指明了索引的确切名字, 为了让SQL走新的索引, 你可能不得不去更改SQL中的HINT, 或用Outline来实现, 这样其实并不方便. 另外对于开发人员来说, 他们或许不知道那个索引更好, 但他们一般知道这个表上那个列的可选择性(Selectivity)好一些. 如果有方法能让Oracle的优化器选择某些列或以某些列前导的索引, 对DBA及开发人员都将十分有利. 一年多以前我就想让Oracle加一个INDEX_COL的HINT, 在用时我们只需要指定"index_col(表名, 列, ...)"就行了.

    为此我在Google讨论组上发了这个点子, 有人提示我Oracle已经有一个没有公开的HINT来实现这个功能了, 是Jonathan Lewis在10g版本中发现的, 对于这个用法, 我个人十分喜欢, 想不出大师是如何发现这个的? Oracle有内鬼和他相通?

    下面是这个HINT的一个用法, 将让Oracle选择以COL1或COL1+COL2列开头的索引(需要做实验验证一下), 但不会选择以COL2列开始的索引, 这一点要注意了, 不过不同的版本中, Oracle会有所更改. 不知道这个功能在Oracle 11g中有没有作出改进?

/*+ index(table_alias tablename(col1, col2)) */

    现在Oracle宣称11g Beta出来已经有不少天数了, 不知道有没有朋友得到Beta版本的, 有的话能帮我看一下这个HINT是不是已经公开了, 还是仍然是一个非公开的HINT, 还是加了一个INDEX_COL的HINT, 如果已经公开, 我们绝对会使用!

留言 (2)

加进我的知识库了, 老兄辛苦了.

可惜我们得不到测试版啊, 只有落在别人后面了.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • What's your nationality?
  • 你是什么国籍?
  • What's your motherland?
  • 你祖国是哪儿?
  • Are you a native Chinese?
  • 你是土生土长的中国人吗?
  • What's the population of China?
  • 中国有多少人口?
  • How many provinces do you have?
  • 你们有多少个区?