Tài liệu Các khái niệm cơ bản của DB2: Giới thiệu các bảng truy vấn cụ thể hóa - Pdf 10

Các khái niệm cơ bản của DB2: Giới thiệu các bảng
truy vấn cụ thể hóa
Bảng truy vấn cụ thể hóa (MQT) là một bảng được xác định dựa trên kết quả của một truy vấn.
Các dữ liệu được chứa trong MQT có nguồn gốc từ một hoặc nhiều bảng mà dựa vào chúng,
người ta cụ thể hoá định nghĩa của bảng truy vấn. Bảng Tóm tắt (hoặc bảng tóm tắt tự động,
AST), quen thuộc với những người sử dụng cơ sở dữ liệu thông dụng DB2 (UDB) của IBM
trong Linux, UNIX, và Windows (DB2 UDB), được coi là dạng đặc biệt của MQT. Việc chọn
đầy đủ là một phần của định nghĩa của một bảng tóm tắt, chứa mệnh đề GROUP BY để tổng hợp
dữ liệu từ các bảng được tham chiếu trong câu chọn này.
Bạn có thể nghĩ MQT như một loại khung nhìn cụ thể hóa. Cả khung nhìn lẫn các MQT được
xác định dựa trên một truy vấn. Truy vấn mà trên đó khung nhìn dựa vào được chạy bất cứ khi
nào một khung nhìn được tham chiếu; tuy nhiên, trên thực tế MQT lưu giữ các kết quả truy vấn
làm dữ liệu, và bạn có thể làm việc với các dữ liệu ở trong MQT thay vì các dữ liệu ở trong các
bảng nêu ra.
Các bảng truy vấn cụ thể hóa có thể cải thiện một cách đáng kể hiệu suất của các truy vấn, đặc
biệt là các truy vấn phức tạp. Nếu như trình tối ưu xác định rằng một truy vấn hoặc một phần của
một truy vấn có thể được giải bằng cách sử dụng một MQT, thì truy vấn có thể được viết lại để
tận dụng lợi thế của MQT này.
Có thể xác định MQT ở thời gian tạo bảng vì được hệ thống hay người dùng duy trì. Các phần
tiếp theo sẽ giới thiệu cho bạn hai loại MQT, cũng như bảng tóm tắt và bảng phân tầng. Các ví
dụ sau đây yêu cầu kết nối tới cơ sở dữ liệu SAMPLE; nếu chưa có cơ sở dữ liệu SAMPLE trong
hệ thống, thì bạn có thể tạo ra nó bằng cách nhập lệnh db2sampl từ bất kỳ dấu nhắc lệnh nào.
Các MQT được duy trì bởi hệ thống
Các dữ liệu trong loại này của bảng truy vấn cụ thể hóa được duy trì bởi hệ thống. Khi bạn tạo
MQT loại này, thì bạn có thể xác định dữ liệu bảng sẽ là loại dữ liệu REFRESH IMMEDIATE
(làm mới ngay) hoặc REFRESH DEFERRED (làm mới sau). Từ khóa REFRESH cho phép bạn
xác định cách dữ liệu được được duy trì. Làm mới sau có nghĩa là các dữ liệu trong bảng có thể
được làm mới bất kỳ lúc nào bằng cách sử dụng câu lệnh REFRESH TABLE. Các MQT, dù là
làm mới ngay hoặc về sau, được hệ thống duy trì, cũng không cho phép các hoạt động chèn, cập
nhật, hoặc xóa được thực hiện đối với chính chúng. Tuy nhiên, các MQT với REFRESH
IMMEDIATE được hệ thống duy trì được cập nhật với các thay đổi trên bảng nêu ra như kết quả

checked not
incremental

select * from emp

EMPNO FIRSTNME LASTNAME PHONENO DEPTNO DEPARTMENT MGRNO

000010 CHRISTINE HAAS 3978 A00 SPIFFY COMPU 000010
000020 MICHAEL THOMPSON 3476 B01 PLANNING 000020
000030 SALLY KWAN 4738 C01 INFORMATION 000030
000050 JOHN GEYER 6789 E01 SUPPORT SERV 000050
000060 IRVING STERN 6423 D11 MANUFACTURIN 000060
000070 EVA PULASKI 7831 D21 ADMINISTRATI 000070
000090 EILEEN HENDERSON 5498 E11 OPERATIONS 000090
000100 THEODORE SPENSER 0972 E21 SOFTWARE SUP 000100
000110 VINCENZO LUCCHESSI 3490 A00 SPIFFY COMPU 000010
000120 SEAN O'CONNELL 2167 A00 SPIFFY COMPU 000010
000130 DOLORES QUINTANA 4578 C01 INFORMATION 000030

000340 JASON GOUNOT 5698 E21 SOFTWARE SUP 000100

32 record(s) selected.

connect reset

Về đầu trang
Các MQT được duy trì bởi người dùng
Các dữ liệu trong loại này của bảng truy vấn cụ thể hóa được người dùng duy trì. Chỉ có bảng
truy vấn cụ thể hóa REFRESH DEFERRED có thể được định nghĩa là MAINTAINED BY
USER, được người dùng duy trì. Câu lệnh REFRESH TABLE (sử dụng cho các MQT do hệ

ontario_1995_sales_team materialized query immediate
unchecked

export to ontario_1995_sales_team.del of del
select distinct e.empno, e.firstnme, e.lastname, e.workdept, e.phoneno,
'Ontario' as region, year(s.sales_date) as year from employee e,
sales s
where e.lastname = s.sales_person and year(s.sales_date) = 1995
and left(s.region, 3) = 'Ont'

Number of rows exported: 2

import from ontario_1995_sales_team.del of del insert into
ontario_1995_sales_team Number of rows committed = 2

insert into ontario_1995_sales_team
values ('006900', 'RUSS', 'DYERS', 'D44', '1234', 'Ontario', 1995)

select * from ontario_1995_sales_team

EMPNO FIRSTNME LASTNAME WORKDEPT PHONENO REGION YEAR

000110 VINCENZO LUCCHESSI A00 3490 Ontario 1995
000330 WING LEE E21 2103 Ontario 1995
006900 RUSS DYERS D44 1234 Ontario 1995

3 record(s) selected.


select * from sales_summary

SALES_PERSON REGION TOTAL_SALES

SQL0668N Operation not allowed for reason code "1" on table
"MELNYK.SALES_SUMMARY". SQLSTATE=57016

refresh table sales_summary

select * from sales_summary

SALES_PERSON REGION TOTAL_SALES

GOUNOT Manitoba 15
GOUNOT Ontario-North 1
GOUNOT Ontario-South 10
GOUNOT Quebec 24
LEE Manitoba 23
LEE Ontario-North 8
LEE Ontario-South 34
LEE Quebec 26
LUCCHESSI Manitoba 3
LUCCHESSI Ontario-South 8
LUCCHESSI Quebec 3

11 record(s) selected.

insert
into

84

LEE Quebec 26 11 record(s) selected.

delete
from
sales where sales_date = '06/28/2005' and sales_person = 'LEE'
and region = 'Ontario-South'

refresh table sales_summary

select * from sales_summary

SALES_PERSON REGION TOTAL_SALES LEE Ontario-North 8
LEE Ontario-South 34
LEE Quebec 26 11 record(s) selected.

connect reset

Về đầu trang
Các bảng phân tầng

Liệt kê 4. Sử dụng bảng phân tầng với bảng tóm tắt

connect to sample create table emp_summary as (select workdept, job, count(*) as count
from employee group
by workdept, job)
data initially deferred refresh deferred create table emp_summary_s
for emp_summary propagate immediate set integrity
for emp_summary materialized query immediate
unchecked set integrity for emp_summary_s staging immediate unchecked

select * from emp_summary

WORKDEPT JOB COUNT 0 record(s) selected.

refresh table emp_summary
SQL1594W Integrity of non-incremental data remains unverified by the
database manager. SQLSTATE=01636

select * from emp_summary

WORKDEPT JOB COUNT 0 record(s) selected.


D44 FIELDREP 1

1 record(s) selected.

connect reset


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status