当前位置: 首页 > wzjs >正文

网站建设发专业人才培养方案手机版网站如何制作

网站建设发专业人才培养方案,手机版网站如何制作,微信商城怎么做,中国最权威的网站排名一、视图(View)管理 1. 视图的定义与本质 视图(View)是Oracle数据库中的逻辑表,它不直接存储数据,而是通过预定义的SQL查询动态生成结果集。视图的本质可以理解为: 虚拟表:用户可…

一、视图(View)管理

1. 视图的定义与本质

视图(View)是Oracle数据库中的逻辑表,它不直接存储数据,而是通过预定义的SQL查询动态生成结果集。视图的本质可以理解为:

  • 虚拟表:用户可像操作普通表一样查询视图
  • 查询模板:保存复杂的SELECT语句逻辑
  • 安全屏障:隐藏底层表结构和敏感数据

2. 视图的核心作用

应用场景

说明

简化复杂查询

将多表关联、聚合计算等操作封装为简单查询

数据权限控制

仅暴露部分列或行数据(如屏蔽薪资字段)

逻辑抽象层

业务系统无需关心物理表结构变化

数据整合

合并多个异构数据源(需配合物化视图)

3. 视图的创建与维护

基础语法
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW schema.view_name 
[(column1, column2...)]
AS SELECT_statement
[WITH CHECK OPTION] 
[WITH READ ONLY];
参数解析
  • OR REPLACE:覆盖同名视图
  • FORCE:即使基表不存在也强制创建(默认NOFORCE
  • WITH CHECK OPTION:插入/更新数据时需满足视图条件
  • WITH READ ONLY:禁止通过视图修改数据
创建示例
-- 创建高薪员工视图(薪资>=10000)
CREATE OR REPLACE VIEW v_high_salary 
AS
SELECT employee_id, name, salary, department_id
FROM employees
WHERE salary >= 10000
WITH CHECK OPTION;
视图维护操作
-- 查看视图定义
SELECT text FROM user_views WHERE view_name = 'V_HIGH_SALARY';-- 修改视图(使用OR REPLACE)
CREATE OR REPLACE VIEW v_high_salary AS ...;-- 删除视图
DROP VIEW v_high_salary;

4. 视图更新限制

以下类型的视图不允许直接进行DML操作:

  1. 包含聚合函数(SUM/AVG等)
  2. 包含GROUP BYHAVING子句
  3. 包含DISTINCT关键字
  4. 包含ROWNUM伪列
  5. 多表连接查询(部分情况)
示例:只读视图创建
CREATE VIEW v_dept_stats AS
SELECT department_id, AVG(salary) avg_sal
FROM employees
GROUP BY department_id
WITH READ ONLY;

二、索引(Index)管理

1. 索引的核心价值

索引是提高查询性能的数据结构,其作用类似书籍目录。Oracle支持多种索引类型:

索引类型

特点

B-Tree索引

默认类型,适合高基数列(唯一值多)

位图索引

低基数列(如性别),适合OLAP系统

函数索引

基于列的函数表达式创建(如UPPER(name)

组合索引

多列联合索引,列顺序影响查询效率

2. 索引的创建与维护

基础语法
CREATE [UNIQUE] [BITMAP] INDEX schema.index_name
ON table_name (column1 [ASC|DESC], ...)
[TABLESPACE tablespace_name]
[STORAGE (...)]
[ONLINE];  -- 在线创建不影响业务
创建示例
-- 单列B-Tree索引
CREATE INDEX idx_emp_salary ON employees(salary);-- 组合索引
CREATE INDEX idx_emp_dept_sal ON employees(department_id, salary DESC);-- 函数索引
CREATE INDEX idx_emp_name_upper ON employees(UPPER(name));
索引维护操作
-- 重建索引(优化存储)
ALTER INDEX idx_emp_salary REBUILD;-- 监控索引使用
SELECT * FROM v$object_usage WHERE index_name = 'IDX_EMP_SALARY';-- 删除索引
DROP INDEX idx_emp_salary;

3. 索引优化策略

创建原则
  • 高频查询字段:WHEREJOINORDER BY常用列
  • 选择高选择性列:区分度高的列(如ID)
  • 避免过度索引:单表索引不超过5个
  • 组合索引列顺序:等值查询列在前,范围查询列在后
性能验证方法
-- 查看执行计划
EXPLAIN PLAN FOR 
SELECT * FROM employees WHERE salary >= 10000;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);-- 统计信息收集
EXEC DBMS_STATS.GATHER_TABLE_STATS('HR', 'EMPLOYEES');

4. 索引的代价

  • 存储开销:索引占用表空间的20%-30%
  • DML性能下降:每次INSERT/UPDATE/DELETE需维护索引
  • 优化器误判:低效索引可能导致执行计划劣化

三、视图、索引实战

1. 环境准备

基础表结构(已提供)
-- 员工表(含薪资、部门等信息)
CREATE TABLE employees (employee_id NUMBER(6) PRIMARY KEY,name VARCHAR2(50) NOT NULL,email VARCHAR2(50),phone_number VARCHAR2(20),hire_date DATE NOT NULL,job_id VARCHAR2(10),salary NUMBER(8,2),commission_pct NUMBER(2,2),manager_id NUMBER(6),department_id NUMBER(4)
);-- 部门表
CREATE TABLE departments (department_id NUMBER(4) PRIMARY KEY,department_name VARCHAR2(30) NOT NULL,manager_id NUMBER(6),location_id NUMBER(4)
);
模拟数据(供验证)
-- 插入部门数据
INSERT INTO departments VALUES (10, 'IT', 100, 1700);
INSERT INTO departments VALUES (20, 'Sales', 101, 1800);-- 插入员工数据
INSERT INTO employees VALUES 
(100, 'Alice', 'alice@company.com', '515.123.4567', DATE '2020-01-01', 'IT_PROG', 15000, NULL, NULL, 10);
INSERT INTO employees VALUES 
(101, 'Bob', 'bob@company.com', '515.123.4568', DATE '2019-06-01', 'SA_MAN', 12000, 0.2, 100, 20);

2. 视图高级应用实战

1. 安全视图:隐藏敏感字段
CREATE VIEW v_hr_employee AS
SELECT employee_id,name,email,phone_number,hire_date,job_id,department_id
FROM employees
WITH CHECK OPTION;  -- 防止通过视图插入不符合条件的数据-- 测试查询
SELECT * FROM v_hr_employee WHERE department_id = 10;
2. 计算视图:薪资分析
CREATE OR REPLACE VIEW v_employee_annual_income AS
SELECT employee_id,name,salary,commission_pct,-- 计算年薪:月薪*13 + 佣金(salary * 13 + NVL(salary * commission_pct, 0)) AS annual_income,department_id
FROM employees
WHERE salary IS NOT NULL;-- 查询年薪超过15万的员工
SELECT * FROM v_employee_annual_income 
WHERE annual_income > 150000
ORDER BY annual_income DESC;
3. 多表关联视图:员工详情
CREATE VIEW v_emp_details AS
SELECT e.employee_id,e.name,d.department_name,e.hire_date,TRUNC(MONTHS_BETWEEN(SYSDATE, e.hire_date)/12) AS years_of_service
FROM employees e
JOIN departments d ON e.department_id = d.department_id;-- 查询IT部门工龄超过3年的员工
SELECT * FROM v_emp_details 
WHERE department_name = 'IT' AND years_of_service > 3;
4. 带权限的物化视图
CREATE MATERIALIZED VIEW mv_dept_salary_stats
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE + 1
AS
SELECT d.department_name,COUNT(e.employee_id) AS emp_count,AVG(e.salary) AS avg_salary,MAX(e.salary) AS max_salary
FROM employees e
JOIN departments d ON e.department_id = d.department_id
GROUP BY d.department_name;-- 查询物化视图
SELECT * FROM mv_dept_salary_stats WHERE avg_salary > 10000;

3. 索引深度优化实战

1. 高频查询优化
-- 创建函数索引
CREATE INDEX idx_emp_email_upper ON employees(UPPER(email));-- 使用索引的查询
SELECT * FROM employees 
WHERE UPPER(email) = UPPER('alice@company.com');  -- 命中索引
2. 组合索引设计
-- 创建组合索引(部门ID + 薪资降序)
CREATE INDEX idx_emp_dept_salary ON employees(department_id, salary DESC);-- 高效查询:IT部门薪资前10名
SELECT * FROM (SELECT * FROM employees WHERE department_id = 10 ORDER BY salary DESC
) WHERE ROWNUM <= 10;  -- 利用索引避免全表排序
3. 覆盖索引加速统计
-- 创建覆盖索引
CREATE INDEX idx_emp_dept_covering ON employees(department_id, employee_id);-- 查询可直接从索引获取数据
SELECT department_id, COUNT(employee_id) 
FROM employees 
GROUP BY department_id;  -- 使用INDEX FAST FULL SCAN
4. 索引监控与维护
-- 步骤1:监控索引使用情况
ALTER INDEX idx_emp_dept_salary MONITORING USAGE;-- 步骤2:分析无效索引
SELECT * FROM v$object_usage 
WHERE index_name = 'IDX_EMP_DEPT_SALARY'
AND used = 'NO';  -- 若长期未使用,考虑删除-- 步骤3:重建索引优化空间
ALTER INDEX idx_emp_dept_salary REBUILD ONLINE;

4. 执行计划分析案例

1. 未使用索引的慢查询
EXPLAIN PLAN FOR
SELECT * FROM employees 
WHERE UPPER(name) = 'ALICE';  -- 未使用索引SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
/* 输出关键信息:TABLE ACCESS FULL | EMPLOYEES
*/
2. 优化后使用函数索引
-- 创建函数索引
CREATE INDEX idx_emp_name_upper ON employees(UPPER(name));-- 再次分析
EXPLAIN PLAN FOR
SELECT * FROM employees 
WHERE UPPER(name) = 'ALICE';SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
/* 输出关键信息:INDEX RANGE SCAN | IDX_EMP_NAME_UPPER
*/

四、开发注意事项

1. 视图更新陷阱

-- 错误示例:尝试更新计算视图
UPDATE v_employee_annual_income 
SET annual_income = 200000 
WHERE employee_id = 100;  -- 将抛出ORA-01733错误

2. 索引设计禁忌

  • 过度索引:在频繁更新的列上创建多个索引
  • 冗余索引:已有组合索引 (a,b) 再单独创建 (a)
  • 无效索引:在性别等低基数列上使用B-Tree索引

3. 高级技巧

  • 不可见索引测试
CREATE INDEX idx_test ON employees(phone_number) INVISIBLE;
-- 按需切换可见性
ALTER INDEX idx_test VISIBLE;
  • 位图索引适用场景
CREATE BITMAP INDEX idx_emp_job ON employees(job_id);  -- 适合重复值多的列

附录:常用系统视图查询

-- 查看所有索引
SELECT * FROM user_indexes WHERE table_name = 'EMPLOYEES';-- 查看视图定义
SELECT text FROM user_views WHERE view_name = 'V_HR_EMPLOYEE';-- 分析索引碎片率
SELECT name, del_lf_rows/lf_rows AS frag_ratio 
FROM index_stats WHERE lf_rows > 0; 

文章转载自:

http://vLYy01IE.npqps.cn
http://68h5hevL.npqps.cn
http://pCLCjtRX.npqps.cn
http://A8M3JOiR.npqps.cn
http://7FzbttxM.npqps.cn
http://UIigagDb.npqps.cn
http://6myizARQ.npqps.cn
http://q4tjCDPa.npqps.cn
http://egFjM8TT.npqps.cn
http://xMoweFW3.npqps.cn
http://esfwbgNs.npqps.cn
http://Q9B5xs9Y.npqps.cn
http://Jl6liVgQ.npqps.cn
http://SjKDZM6v.npqps.cn
http://JSlH2dY4.npqps.cn
http://Bog2sM97.npqps.cn
http://oc5EADpy.npqps.cn
http://FFNq2ZA6.npqps.cn
http://zXNE97g7.npqps.cn
http://5FWnEPqP.npqps.cn
http://DZz11LyI.npqps.cn
http://52wfjiHk.npqps.cn
http://deZMg1tu.npqps.cn
http://oxasKsof.npqps.cn
http://4rrNIHbE.npqps.cn
http://arWXsm0v.npqps.cn
http://Sq2zxUvg.npqps.cn
http://L7c1cipR.npqps.cn
http://1vCvbNYF.npqps.cn
http://07FuXTAt.npqps.cn
http://www.dtcms.com/wzjs/652388.html

相关文章:

  • 哪些网站用echarts做的国外贸易网站
  • wordpress显示一个类目长沙优化网站技术厂家
  • 重庆做网站最好的网站怎么上传到空间
  • 做网站基础教程推广网站的方式
  • 成都便宜做网站的前端学什么
  • 公司注册网站方法移动端app是什么意思
  • 艺术培训网站模板wordpress彩色美化
  • 深圳住房建设部网站建设网站增城
  • 西安网站建设缑阳建与做网站的人怎么谈判
  • 重庆荣昌网站建设公司wordpress koncept 下载
  • 网站建设怎么选择MySQL数据库大小京伦科技做的网站如何
  • 旅游网站策划书河南网站建设设计
  • 如何利用php开源系统建立php网站重庆网站seo搜索引擎优化
  • 城市建设模拟游戏官方网站男人和女人做羞羞的免费网站
  • 网站上传图片尺寸最新获取网站访客qq接口
  • 电子商务网站建设成都网络营销师培训课程
  • 城乡建设举报网站重庆网站自己推广
  • 织梦网站动态网站搜索框用ps怎么做
  • pop布局的网站123邢台招聘信息网
  • 网站建设国外拂去其网站鼠标移上去显示层
  • 给企业做网站 内容需要对方提供喀什百度做网站多少钱
  • 定安免费建站公司北京工程建设监理协会网站
  • 做网站公司 郑州自媒体app推广是做什么的
  • 贵州省建设项目验收备案网站整站优化系统
  • 厦门外贸网站建设公司一件代发货源网
  • 网站建设的目的与意义是什么努力把网站建设成为
  • 企业网站的建立的目的国家建设部网站2018年
  • 生态建筑建设公司网站中英文网站建设用两个域名
  • 收费下载的wordpress网站商业软文代写
  • 互动网站案例外发加工单表格范本