Oracle中索引示例

--drop table customers;
--建测试用表
CREATE TABLE customers (
  customer_id INTEGER CONSTRAINT customers_pk PRIMARY KEY,
  first_name VARCHAR2(10) NOT NULL,
  last_name VARCHAR2(10) NOT NULL,
  dob DATE,
  phone VARCHAR2(12)
);
drop table customers;
--添加测试数据
INSERT INTO customers
VALUES (1, 'John', 'Brown', '01-1月-1965', '800-555-1211');
INSERT INTO customers 
VALUES (2, 'Cynthia', 'Green', '05-2月-1968', '800-555-1212');
INSERT INTO customers
VALUES (3, 'Steve', 'White', '16-3月-1971', '800-555-1213');
INSERT INTO customers
VALUES (4, 'Gail', 'Black', NULL, '800-555-1214');
INSERT INTO customers
VALUES (5, 'Doreen', 'Blue', '20-5月-1970', NULL);
commit;

select * from customers;
SELECT customer_id, first_name, last_name
FROM customers
WHERE last_name = 'Brown';

--创建普通的B树(默认索引类型)
CREATE INDEX i_customers_last_name 
ON customers(last_name);

--可以使用唯一索引强制列值的唯一
CREATE UNIQUE INDEX i_customers_phone
ON customers(phone);
--由于查询使用了UPPER()函数,这样的i_customers_last_name索引就不起作用。

--如果你的索引是基于函数处理的结果的话,那么可以使用函数索引
CREATE INDEX i_func_customers_last_name
ON customers(UPPER(last_name));
select last_name from customers;

--在order_status表的status列上创建位图索引,使用在性别列上,
CREATE BITMAP INDEX i_emp_ename
ON customers(first_name);
select * from emp;


--切换登录去执行
ALTER lianxi SET QUERY_REWRITE_ENABLED=TRUE;
--授权
grant create any INDEX to lianxi;
--可以通过查看user_indexes视图,了解索引的信息
SELECT index_name, table_name, uniqueness, status
FROM user_indexes
WHERE table_name IN ('CUSTOMERS')
ORDER BY index_name;
--customers_pk索引是在创建表时设置customer_id列为主键时数据库自动创建的

--可以通过user_ind_columns视图查看某列的索引信息
SELECT index_name, table_name, column_name
FROM user_ind_columns
WHERE table_name IN ('CUSTOMERS')
ORDER BY index_name;

--可以使用ALTER INDEX语句修改索引,修改i_customers_phone索引名为i_customers_phone_number索引
ALTER INDEX i_customers_phone RENAME TO i_customers_phone_number;

--可以使用DROP INDEX删除索引
DROP INDEX i_customers_phone_number;



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值