Oracle index 的运用
1 查看某张表的index的详细信息。(column_position代表选择顺序)
select table_name, index_name, column_name, column_position
from user_ind_columns
where table_name = 'T_BASE_DATA_DICTIONARY'
order by table_name, index_name, column_position;
2 在创建表时对列指定NOT NULL后会禁用NULL值,而且可以避免与使用NULL值相关的性能问题。(如:index :xxx is not null )
3将Oracle的ROWID硬编码成特定代码时,一定要小心谨慎。因为不同版本的ROWID结构会有所不同,而且在将来的版本里可能还会有所改变。我建议不要对ROWID进行硬编码
4通过改变所比较的列上的值,而不用改变列本身,就可以启用索引用。这样可避免全表扫描。
5对于有较低基数的列需要使用位图索引。性别列就是这样一个例子,它有两个可能值:男或女(基数仅为2)。位图对于低基数(少量的不同值)列来说非常快,这是因为索引的尺寸相对于B树索引来说小了很多。因为这些索引是低基数的B树索引,所以非常小因此您可以经常检索表中超过半数的行,并且仍使用位图索引.
在一个查询中合并多个位图索引后,可以使性能显著提高。位图索引使用固定长度的数据类型要比可变长度的数据类型好。较大尺寸的块也会提高对位图索引的存储和读取性能。
建议不要在一些联机事务处理(OLTP)应用程序中使用位图索引。B树索引的索引值中包含ROWID,这样Oracle就可以在行级别上锁定索引。位图索引存储为压缩的索引值,其中包含了一定范围的ROWID,因此Oracle必须针对一个给定值锁定所有范围内的ROWID。这种锁定类型可能在某些DML语句中造成死锁。SELECT语句不会受到这种锁定问题的影响。
位图索引有很多限制,如下所示:
● 基于规则的优化器不会考虑位图索引。
● 当执行ALTER TABLE语句并修改包含有位图索引的列时,会使位图索引失效。
● 位图索引不包含任何列数据,并且不能用于任何类型的完整性检查。
● 位图索引不能被声明为唯一索引。
● 位图索引的最大长度为30。
相关文档:
## Oracle 数据导入到 Mysql ##
__________________________________________ ......
Oracle/PLSQL: Lpad Function:
http://www.techonthenet.com/oracle/functions/lpad.php
RPAD and LPAD [Oracle SQL]:
http://www.adp-gmbh.ch/ora/sql/rpad.html
引述
In Oracle/PLSQL, the lpad function pads the left-side of a string with a specific set of characters.
The syntax for the lpad funct ......
1.客户端连接至oralce:
首先客户端连接至oracle的监听器,然后监听器分配一个数据库实例(这里的是实例)给客户端,然后客户端以后就直接与这个数据库实例进行连接,直至断开与oracle的连接.
2.提交sql:
(1)客户端用户提交一个sql ......
最近始终被数据库问题困扰,出于项目应用原因,定义了一些oracle自定义函数(User Defined function),用于在实际查询SQL语句中调用,目的是为了简化SQL语句的复杂度。实际使用中发现,这些函数会出现一个莫名奇妙的问题,先上实例:
CREATE OR REPLACE FUNCTION "GETSINGLEUSER" --返回第一个字符串
(sStr in nvarchar2)
r ......