1)使用索引:
使用索引,可以大大加快数据的定位速度,通过使用索引,可以大大的降低i/o次数,从而提高sql语句的访问性能;
建立索引
如下:
create index index_name on table_name(column_name);
建立索引的方针:
1)索引正确的表和列:
如果选择了不合适的表和列,那么不仅仅不能提高查询的速度,还会极大的降低DML操作的速度,
所以建立索引应该用在where子句经常引用的表列上,
为了提高多表连接的性能,应该在连接列上建立索引
如果经常需要基于某列或者某几列执行排序操作,那么应该在这些列上面建立索引,可以加快数据排列的速度
不要在小表上建立索引
2)限制索引的个数
3)删除不需要的索引
DROP INDEX INDEX_NAME
复合索引:
复合索引的建立如下:
create index index_name on table_name(column1.column2);
建立了复合索引的时候,当用and查询建立索引的两列的时候,会引用这两个索引
如 SELECT * FROM table_name WHERE column1=xx AND column2=xx
如果是执行建立索引的主字段上面为column1
如下
SELECT * FROM table_name WHERE column1=xx
那么该索引将被引用;
如果是用其从属字段执行查询或者用OR连接的话,那么这个索引都不会被引用
如下
SELECT * FROM table_name WHERE column2=xx
或者
SELECT * FROM table_name WHERE column1=xx OR column2=xx'
维护索引:
当重新组织表以后,索引就会陷入无序状态,这个时候,我们应该重建索引
ALTER INDEX index_name REBUILD
如果我们在重建索引的时候,别的会话在表上执行DML操作,那么我们应该执行联机重建索引
ALTER INDEX index_name REBUILD ONLINE
索引信息都记录在
user_indexes里面
序列:
oracle里面的序列是生成为唯一数字的数据库对象
CREATE SEQUENCE sequence_name
increment by n
start with n
maxvalue n
minvalue n
cycle|nocycle
cache |nocache
使用序列
sequence_name.currval
sequence_name.nextval
修改序列:
ALTER SEQUENCE sequence_name 。。。。。。
信息都存储在user_sequences里面;