1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tối ưu một số câu lệnh truy vấn SQL và ứng dụng

113 241 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 113
Dung lượng 1,39 MB

Nội dung

Số hóa bởi Trung tâm Học liệu – CPUCentral Processing Unit Bộ xử lý trung tâm OOPObject Oriented Programming Lập trình hướng đối tượng QEP Query Executtion Plan Chiến lược thực thi vấn t

Trang 1

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

Trang 2

Số hóa bởi Trung tâm Học liệu – ĐHTN ht t p : / / www lrc.tnu e du v n

Trang 3

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: TS.VŨ ĐỨC THÁI

Trang 4

Số hóa bởi Trung tâm Học liệu – ĐHTN ht t p : / / www lrc.tnu e du v n

Trang 5

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học Học viên thực hiện

TS VŨ ĐỨC THÁI Chanthiva MANIVONG

Thái nguyên – 2015

Trang 6

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

THÔNG

i

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi

Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được aicông bố trong bất kỳ công trình nào khác

Qua đây em xin chân thành cảm ơn toàn thể các thầy cô trong khoa đàotạo sau đại học trường Đại học Công nghệ Thông tin và Truyền thông và đặc biệt

là Thầy TS.Vũ Đức Thái, đã tạo điều kiện thuận lợi và hướng dẫn em để hoànthành luận văn này

Thái Nguyên, tháng 12 năm 2015

Tác giả

Chanthiva MANIVONG

Trang 7

Để hoàn thành chương trình cao học và viết luận văn, tôi đã nhận được

sự hướng dẫn, giúp đỡ góp ý nhiệt tình của quý thầy cô trường Đại học Công nghệThông tin và Truyền thông – Đại học Thái Nguyên

Tôi xin chân thành cảm ơn đến quý thầy cô trường Đại học Công nghệThông tin và Truyền thông - Đại học Thái Nguyên, quý thầy cô Viện CNTT, đặcbiệt là những thầy cô đã tận tình dạy bảo cho tôi trong suốt thời gian học tập tạitrường

Tôi xin gửi lời cảm ơn sâu sắc đến TS VŨ ĐỨC THÁI đã dành rất nhiềuthời gian và tâm huyết, chỉ bảo tận tình hướng dẫn nghiên cứu và giúp tôi hoànthành luận văn này

Nhân đây, tôi xin chân thành cảm ơn Ban giám hiệu, Phòng Đào tạo SauĐại học trường Đại học Công nghệ Thông tin và Truyền thông - Đại học TháiNguyên đã tạo mọi điều kiện để tôi học tập và hoàn thành tốt khóa học

Mặc dù đã cố gắng hoàn thành luận văn bằng tất cả sự nhiệt tình tâmhuyết và năng lực của mình Tuy nhiên, luận văn không thể tránh những thiếu sót,tôi rất mong nhận được những đóng góp quý báu của quý thầy cô và các bạn

Lời cảm ơn sau cùng tôi xin dành cho gia đình và những người bạn đãhết lòng quan tâm giúp đỡ, tạo điều kiện tốt nhất để tôi hoàn thành luận văn tốtnghiệp này

Tôi xin chân thành cảm ơn!

Thái Nguyên, tháng 12 năm 2015

Học viên thực hiện

Chanthiva MANIVONG

Trang 8

Số hóa bởi Trung tâm Học liệu –

ĐHTN ht t p : / / www lrc.tnu e du v n

Số hóa bởi Trung tâm Học liệu –

ĐHTN ht t p : / / www lrc.tnu e du v n

33

MỤC LỤC

LỜI CAM ĐOAN i

MỤC LỤC ii

DANH MỤC CÁC KÝ HIỆU v

DANH MỤC CÁC CHỮ VIẾT TẮT vi

DANH MỤC BẢNG BIỂU vii

DANH MỤC HÌNH ẢNH viii

LỜI NÓI ĐẦU 1

CHƯƠNG 1 NHỮNG VẤN ĐỀ CƠ BẢN VỀ CSDL VÀ CÂU LỆNH SQL 2

1.1 Cơ sở dữ liệu quan hệ 2

1.1.1 Vai trò của hệ thống thông tin 2

1.1.2 Các chức năng của một hệ quản trị CSDL 3

1.1.3 Các thành phần của một hệ QTCSDL 4

1.2 Giới thiệu ngôn ngữ SQL 4

1.3 Ngôn ngữ định nghĩa dữ liệu 5

1.4 Ngôn ngữ truy vấn dữ liệu SQL (Structured Query Language) 6

CHƯƠNG 2 CÁC GIẢI PHÁP VÀ THUẬT TOÁN TỐI ƯU CÂU LỆNH SQL

14 2.1 Tối ưu hóa câu lệnh SQL 14

2.2 Một số nguyên tắc trong tối ưu 14

2.3 Một số chiến lược tối ưu 16

2.4 Một số thuật toán 18

2.4.1.Thuật toán Ingres 18

2.4.2 Thuật toán INGRES- QOA 25

2.4.3 Thuật toán System 25

2.4.4 Thuật toán R-QOA 27

2.5 Phương pháp phân rã SQL 30

2.5.1 Nôi dung của phương pháp phân rã SQL 30

2.5.2 Những ưu và nhược điểm của phương pháp phân rã SQL 35

2.5.3 Ứng dụng của phương pháp phân rã SQL 36

Trang 9

Số hóa bởi Trung tâm Học liệu –

Trang 10

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

55

2.6.2 Những ưu và nhược điểm của của phương pháp thay thế SQL 38

2.6.3 Ứng dụng của phương pháp thay thế SQL 40

2.7 Thuật toán xử lý tiền tối ưu câu SQL 41

2.8 Một số kỹ thuật tối ưu 46

2.8.1 Nguyên nhân làm giảm tốc độ xử lý 46

2.8.2 Các câu truy vấn được viết nghèo nàn và một só cách khắc phục: 46

CHƯƠNG 3 CHƯƠNG TRÌNH THỬ NGHIỆM TỐI ƯU MỘT SỐ CÂU LỆNH 53

3.1 Mô tả bài toán 53

3.2 Thiết kế các bảng dữ liệu cho hệ thống 54

3.3 Thử nghiệm tiền tối ưu câu lệnh SQL 57

3.3.1 Xây dựng chương trình thử nghiệm 57

3.3.2 Thực hiện thử nghiệm 58

KẾT LUẬN 67

TÀI LIỆU THAM KHẢO 68

Trang 12

Số hóa bởi Trung tâm Học liệu –

CPUCentral Processing Unit (Bộ xử lý trung tâm)

OOPObject Oriented Programming (Lập trình hướng đối tượng) QEP Query Executtion Plan (Chiến lược thực thi vấn tin)

SQLStructured Query Language (Ngôn ngữ truy vấn có cấu trúc)

OVQPOne Variable Query processor (thể xử lý truy vấn một biến)ORQ Đơn quan hệ

MRQĐa quan hệ

Trang 13

viii

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

DANH MỤC BẢNG BIỂU

Bảng 2.1 NHAN VIEN 20

Bảng 2.2 PHAN NHIEM VU 20

Bảng 2.3 Du An 22

Bảng 2.4 LUONG 22

Bảng 2.5 Số liệu của quan hệ DanhHieu 32

Bảng 2.6 Số liệu quan hệ ThamGiaCM 33

Bảng 2.7 Số liệu quan hệ KhenThuong 33

Bảng 2.8 Kết quả danh sách người nhận huân chương 38

Bảng 2.9 Số liệu của quan hệ DanhHieu 42

Bảng 2.10 Số liệu quan hệ ThamGiaCM 42

Bảng 2.11 Số liệu quan hệ KhenThưởng 44

Bảng 2.12 Kết quả sau khi thực hiện thuật toán tối ưu 46

Bảng 3.1 Sinh viên 54

Bảng 3.2 Lớp 55

Bảng 3.3 Môn học 55

Bảng 3.4 Điểm 56

Bảng 3.5 Điểm rèn luyện 56

Bảng 3.6 Điểm học kỳ 56

Trang 14

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

8

viii

DANH MỤC HÌNH ẢNH

Hình 2.1 Đồ thị kết nối của câu truy vấn 29

Hình 2.2 Các thứ tự kết nối lựa chọn 29

Hình 3.1 Cơ sở d ữ liệu th ự c ngh i ệ m 57

Hình 3.2 Giao diện chính chương trình 57

Hình 3.3 Giao diện phần chèn dữ liệu tự động 58

Hình 3.4 Thực hiện truy vấn lấy danh sách điểm sinh viên đã học môn Toán cao cấp 1 59 Hình 3.5 Thực hiện truy vấn lấy danh sách điểm sinh viên sau khi tối ưu 61

Hình 3.6 Thực hiện truy vấn lấy thông tin lý lịch sinh viên 61

Hình 3.7 Thực hiện truy vấn lấy thông tin sinh viên sau khi tối ưu SQL 62

Trang 15

LỜI NÓI ĐẦU

Trong tình hình hiện nay, các tổ chức, doanh nghiệp có nhiều chi nhánh vàđặt ở nhiều nơi với khối lượng dữ liệu lớn Người dùng cũng phân tán nhiều địađiểm với khoảng cách không gian lớn tần suất truy cập sử dụng cơ sở dữ liệukhác nhau Do đó hiểu và nghiên cứu một số quy trình xây dựng phần mềm thìquá trình tối ưu hóa câu lệnh của các chương trình rất có ý nghĩa vì kinh phí đầu

tư của tổ chức, doanh nghiệp cho các thiết bị phần cứng bước đầu còn rất hạnchế Để tối ưu câu lênh trong chương trình phần mềm ta cần thử nghiệm các câulệnh đơn lẻ đảm bảo các yêu cầu sau đó mới có thể áp dụng cho một chươngtrình tổng hợp Các giải pháp, thuật toán tối ưu hóa đến từng câu lệnh cần đượcnghiên cứu phân tích và thử nghiệm cẩn thận

Nếu câu vấn tin SQL (Structured Query Language) đã được tối ưu trướckhi thực hện truy vấn sẽ nâng cao hiệu quả của chương trình và tiết kiệm chi phí.Nhận thấy được mức độ cấp thiết của vấn đề và được sự gợi ý của thầy giáo

hướng dẫn em đã chọn đề tài: “Tối ưu một số câu lệnh truy vấn SQL và ứng dụng” làm luận văn tốt nghiệp của mình.

Trong phạm vì luận văn của mình, học viên tìm hiểu câu lệnh truy vấnSQL, nghiên cứu phương pháp tối ưu câu SQL để nâng cao hiệu quả của chươngtrình Trong quá trình nghiên cứu học viên đã đề xuất phương pháp phân rã vàthay thế câu lệnh SQL Nội dung luận văn gồm 03 chương:

Chương 1: Giới thiệu vấn đề cơ bản về CSDL và câu lệnh truy vấn SQLChương 2: Các giải pháp và thuật toán tối ưu cân lệnh SQL

Chương 3: Xây dựng chương trình thử nghiệm

Trong đó, tập trung vào các thuật toán được thử nghiệm phân tích ởchương 2 Sau khi thử nghiệm thành công có thể khuyến khích các lập trình viên

sử dụng linh hoạt trong các bài toán cụ thể Từ đó khi xây dựng các phần mềmứng dụng các nhà phát triển có thể ứng dụng để chọn lựa sử dụng trong mộtchương trình cụ thể để có thể tối ưu cho nhiều đoạn mã tương tự

Trang 16

Số hóa bởi Trung tâm Học liệu –

1.1 Cơ sở dữ liệu quan hệ

1.1.1 Vai trò của hệ thống thông tin

Mọi hoạt động kinh doanh của một doan nghiệp đều phải lưu trữ chứng từ,tài liệu, số liệu phục vụ công tác kinh doanh, hạch toán kinh tế, theo dõi quá trìnhkinh doanh đảm bảo hiệu quả Những thông tin đó gọi là cơ sở dữ liệu kinhdoanh Trước khi có công nghệ thông tin hỗ trợ, các nhà doanh nghiệp phải lưutrữ, xử lý thông tin bằng các công cụ thủ công, hoặc bán thủ công Khi công nghệthông tin với máy tính điện tử phát triển hỗ trợ việc xử lý dữ liệu đóng góp tolớn vào hiệu quả kinh doanh của doanh nghiệp Những thông tin phục vụ kinhdoanh có những biến đổi quann trọng với những cấu trúc phức tạp, tinh vi, khốilượng lớn, chất lượng cao ngày càng có giá trị trong hoạt động kinh doanh

Từ những thông tin, tài liệu thô sơ ban đầu đã hình thành nên hệ cơ sở dữliệu bao gồm thiết bị phần cứng để lưu trữ, xử lý, truyền thông và cung cấp thôngtin đến dữ liệu và các phần mềm thao tác dữ liệu với nhiều mô hình đa dạngphong phú có nhiều quy mô, nhiều lớp

Mọi doanh nghiệp đều có chức năng kinh doanh để thực hiện những côngviệc sinh ra lợi nhuận Để thực hiện chức năng kinh doanh hiệu quả doanhnghiệp cần xử lý các thông tin liên quan đến quá trình kinh doanh Nếu tổ chứctốt thông tin việc kinh doanh của doanh nghiệp sẽ có hiệu quả, ổn định và giúpdoanh nghiệp phát triển Thông tin phục vụ cho kinh doanh chính là cơ sở dữ liệu

về toàn bộ quá trình kinh doanh được lưu trữ theo một cấu trúc thích hợp, đápứng mọi thông tin cho việc điều hành, ra quyết định và định hướng cho doanhnghiệp

Mô hình khái niệm có vai trò rất lớn để xây dựng nên một cơ sở dữ liệunhất là trường hợp doanh nghiệp bắt đầu hoạt động Nó mô tả đầy đủ chính xácthông tin cần cho doanh nghiệp, tránh được sự nhầm lẫn thiếu hụt thông tin có

Trang 17

Số hóa bởi Trung tâm Học liệu –

Trang 18

Số hóa bởi Trung tâm Học liệu –

bị, phầnm mềm mà thay đổi sẽ kéo theo những thiệt hại lớn

Một hệ cơ sở dữ liệu bao gồm cơ sở dữ liệu được tổ chức theo một môhình chuẩn và lưu trữ trên hệ thống các thiết bị lưu trữ vật lý có các công cụ vàcác dịch vụ để tạo lập và sử dụng trích xuất thông tin đáp ứng nhu cầu kinhdoanh của doanh nghiệp Do sự phát triển của công nghệ việc lưu trữ vật lý cũng

có nhiều giải pháp như lưu trữ tập trung, lưu trữ phân tán, kho dữ liệu…Khi xâydựng hệ cơ sở dữ liệu phải đạt được những yêu cầu sau:

- Lưu trữ được đầy đủ, chính xác thông tin cần thiết cho quá trình quản lýkinh doanh

- Mô hình khái niệm phải được phân tích rõ ràng, hoàn chỉnh trước khithực thi cài đặt cơ sở dữ liệu trên thiết bị vật lý

- Dữ liệu không được lưu trữ dư thừa trong mô hình vì nếu lưu trữ trùnglặp khi cập nhật sẽ phát sinh sự không nhất quán người dùng không biết dữ liệunào là chính xác để sử dụng Đồng thời cũng không lưu trữ dữ liệu kết xuất nghĩa

là được suy dẫn từ dữ liệu khác

- Hệ cơ sở dữ liệu phải có tính mở, nghĩa là có vị trí lưu trữ dự phòng cho

sự phát triển trong tương lai sao cho vẫn đảm bảo tính liên kết, lô gic trong lưutrữ vật lý

Để thực hiện xây dựng một hệ CSDL, các nhà cung cấp dịch vụ xây dựngnên các Hệ quản trị CSDL là công cụ để thực thi cài đặt CSDL và cung cấp cácthao tác tạo lập và truy xuất vào CSDL lấy ra thông tin

1.1.2 Các chức năng của một hệ quản trị CSDL

Một hệ quản trị CSDL thực hiện các chức năng sau:

+ Tạo cấu trúc dữ liệu tương ứng với mô hình dữ liệu được chọn

+ Đảm bảo tính độc lập dữ liệu

+ Cho phép cập nhật dữ liệu

+ Kết xuất ra được các báo cáo từ các dữ liệu trong CSDL

Trang 19

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

55

+ Đảm bảo tính an toàn và toàn vẹn dữ liệu trong CSDL

+ Cung cấp các tiện ích sao lưu phục hồi dữ liệu

Trang 20

Số hóa bởi Trung tâm Học liệu –

Một hệ quản trị thông thường có các thành phần chính sau:

+ Ngôn ngữ định nghĩa dữ liệu (Data Definition Language)

+ Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)

+ Ngôn ngữ hỏi đáp dữ liệu (Query Language)

+ Bộ viết báo cáo

+ Từ điển dữ liệu

+ Bộ phát sinh đồ hoạ

1.2 Giới thiệu ngôn ngữ SQL

Ngôn ngữ SQL (Structured Query Language) là ngôn ngữ truy vấn mang

tính cấu trúc, được sử dụng trong hầu hết các hệ quản trị cơ sở dữ liệu để truyvấn và sửa đổi cơ sở dữ liệu Ngôn ngữ SQL hỗ trợ các truy vấn dựa trên cácphép toán đại số quan hệ, đồng thời cũng chứa các lệnh sửa đổi cơ sở dữ liệu và

mô tả lược đồ cơ sở dữ liệu

SQL trước kia được gọi là SEQUEL, là một ngôn ngữ phi thủ tục đượcIBM phát triển ở San Jose, mục đích để sử dụng rộng rãi trong hệ thống cơ sở dữliệu thử nghiệm là System R Ngày nay, nó được sử dụng trong rất nhiều hệthống CSDL thương mại, và trong một số trường hợp, toàn bộ hệ thống cơ sở dữliệu được thương mại hoá với tên SQL

Tương tự các ngôn ngữ bậc cao khác, SQL được xây dựng dựa trên cácchữ cái, các chữ số, các ký tự (ký hiệu phép toán, và các ký tự đặc biệt) và mộttập các từ khóa Ngôn ngữ SQL có thể sử dụng theo hai kiểu: kiểu trực tiếp vàlập trình SQL trực tiếp cho phép thực hiện một truy vấn và nhận được kết quảngay tức khắc SQL lập trình cho phép sử dụng SQL trong một chương trình viếtbằng ngôn ngữ lập trình bậc cao khác (như C#, Java, ), hoặc viết các chươngtrình con

Ngôn ngữ SQL được chia thành ba nhóm:

 Ngôn ngữ định nghĩa dữ liệu dùng để mô tả cấu trúc của cơ sở dữ

liệu (các bảng, các khung nhìn, các thuộc tính, các chỉ mục, )

Trang 21

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

77

 Ngôn ngữ thao tác dữ liệu cho phép thực hiện các thao tác trên cơ

sở dữ liệu như: cập nhật cơ sở dữ liệu và truy vấn, lấy ra các thông tin từ cơ sở

dữ liệu

 Ngôn ngữ kiểm soát dữ liệu bao gồm các lệnh dùng để quản lý các

thao tác, các quyền truy cập dữ liệu, kết nối với server

1.3 Ngôn ngữ định nghĩa dữ liệu

(S# Integer Not null,

Sname VarChar(8) Not Null,Status Integer Not Null,City VarChar (30) Not Null)Create Table P

(P# Integer Not null,Pname VarChar(10) Not Null,Weight Integer Not Null, Color VarChar ( 10) Not Null)

Create Table SP

(S# Integer Not null,

P# Integer Not null,Qty Integer,

Sdate Date Not Null,Price Decimal (8,2))

Trang 22

Số hóa bởi Trung tâm Học liệu –

Insert Into S(S#, Sname, Status, City) Values (1011, „Việt Tiên‟, 40, „TP

Hà Nội‟) Nêu vị trí các cột là cố định thì viết:

Insert Into S Values (1011, „Việt Tiến‟, 40, „TP Hà Nội‟)

Nếu quên vị trí các cột là cố định thì viết tên cột và các giá trị theo vị trítương ứng Chẳng hạn:

Insert Into S (Status, s#, City, Sname ) Values (40, 1011, „TP Hà Nội‟,

„Việt Tiến‟, 40)

Chú ý: Đây là lệnh thêm dữ liệu nhưng cũng được dùng để nhập dữ liệu.

1.4 Ngôn ngữ truy vấn dữ liệu SQL (Structured Query Language)

Đây là một loại ngôn ngữ con dữ liệu quan hệ được xác nhận là rất mạnh.Phép toán cơ bản trong SQL là phép ánh xạ, được mô tả về cú pháp như là khốiSELECT - FROM - WHERE

Mệnh đề SELECT nghĩa là chọn các thuộc tính ra, hay còn gọi là thuộctính kết quả, nếu không chỉ ra thuộc tính thì dùng dấu * có nghĩa là tất cả cácthuộc tính của quan hệ đang được chỉ ra sau mệnh đề FROM Mệnh đề FROM đểchỉ ra quan hệ cần cho việc xử lý Sau mệnh đề WHERE là một biểu thức điềukiện lọc dữ liệu (hay còn gọi là biểu thức logic)

Chú ý: Từ đây về sau chúng ta đồng nhất; quan hệ với bảng, thuộc tính với

cột (column) hay trường (field), bộ (tupe) với bản ghi (record) hay hàng (row)

Cú pháp

select: Xác định nội dung của các cột cần đưa ra kết quả

from: Xác định các bảng cần lấy thông tin ra

where: Lọc các bản ghi thoả yêu cầu để đưa ra kết quả

Ngoài ra, để mở rộng khả năng của ngôn ngữ, khối select - from - wherecòn được bổ sung thêm các mệnh đề groupe by, having, order by Các hàm mẫu

và một số phần mềm còn thêm cả mệnh đề contpute, for browse

Trang 23

Số hóa bởi Trung tâm Học liệu –

Trang 24

Số hóa bởi Trung tâm Học liệu –

ĐHTN ht t p : / / www lrc.tnu e du v n

Số hóa bởi Trung tâm Học liệu –

ĐHTN ht t p : / / www lrc.tnu e du v n

10

SELECT [* | DISTINCT] danh-sách-chiếu

FROM danh_sách_tên_bảng | tên_các_View

Trong đó mệnh đề where dược biểu diễn dạng:

WHERE [NOT] BiểuThức PhépSoSánh BiểuThức

WHERE [NOT] tên_cột [ NOT] LIKE xâu_ký_tự

WHERE [NOT] biểu_thức [NOT] BETWEEN biểu_thức AND biểu_thứcWHERE [NOT] BiểuThức [NOT] IN ({danhSách | CâuHỏiCon})

WHERE EXISTS (CâuHỏiCon)

WHERE [NOT] BiểuThức PhépSoSánh { ANY | ALL (CâuHỏiCon)}WHERE [NOT] TênCột phépKếtNối TênCột

WHERE [NOT] biểu_thức_logic

WHERE [NOT] biểu_thức { AND | OR } [NOT] biểu_thức

Tìm kiếm theo câu hỏi đơn giản

Không điều kiện và câu hỏi chỉ liên quan tới 1 bảng

Trong mệnh đề select có danh sách chiếu Danh sách này xác định tên các cột cần có trong bảng kết quả Nếu xuất hiện là chọn hết các cột của bảng

Cho biết danh sách các nhà cung cấp.

Trang 25

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

11

SELECT DISTINCT PName FROM SP

Tìm kiếm với điều kiện đơn giản

Trang 26

Số hóa bởi Trung tâm Học liệu –

Trong SQL- các phép so sánh được sử dụng bao gồm >, <, >= , <=, = và

<> Các phép tính trên dùng cho mọi loại dữ liệu

Tìm kiếm có xử lý xâu ký tự

Trong trường hợp người sử dụng, không nhớ rõ tên người hoặc địa danh

ví dụ là Hoa hay Hoan khi đó có thể viết:

SELECT *

FROM S

WHERE SNAME LIKE 'HOA%'

Trong đó ký hiệu ' % ' là thay thế cho một xâu con, dấu phân cách để thaythế cho một ký tự

A%B: xâu ký tự bất kỳ bắt đầu bằng chữ A và kết thúc bảng chữ B %A :xâu ký tự bất kỳ có ký tự kết thúc là A

A_B : xâu gồm ba ký tự có ký tự thứ hai là bất kỳ

A_: xâu gồm hai ký tự có ký đầu là A

Xử lý ngày tháng

Ngoài các phép tính thông thường SQL còn có thể xử lý dữ liệu dạng ngày

Trang 27

Số hóa bởi Trung tâm Học liệu –

Trang 28

Số hóa bởi Trung tâm Học liệu –

Số hóa bởi Trung tâm Học liệu –

WHERE PRICE BETWEEN 1000 AND 2000

Tìm mã số các nhà cung cấp dã cung cấp ít nhất một trong các mặt hàng có mã P1, P2, P3.

Cho biết số lần mặt hàng P2 đã được cung cấp.

SELECT COUNT ( * )

FROM SP

WHERE P# = „P2‟

Tìm hiệu số mặt hàng P1 bán một lần nhiều nhất và một lần ít nhất của hãng S1.

SELECT MAX(QTY ) - MIN(QTY)

FROMSP

WHERE S# = 'Sl' AND P# = 'P1‟

Cho biết danh sách mã số mặt hàng đã được cung cấp.

SELECT COUNT ( DISTINCT p# )

Trang 29

Số hóa bởi Trung tâm Học liệu –

Trang 30

Số hóa bởi Trung tâm Học liệu –

Mệnh đề order By nếu đứng sau group by thì miền tác động của sắp xếp làtrong từng nhóm của cột được chỉ ra trong group by Nếu cột sắp xếp có ở mệnh

đề select thì trong mệnh đề order by có thể chỉ cần chỉ ra số thứ tự của cột đótrong danh sách chiếu là đủ

Ví dụ trên có thể viết:

SELECT PNAME, P#

FROM P

Trang 31

Số hóa bởi Trung tâm Học liệu –

Trang 32

Số hóa bởi Trung tâm Học liệu – ĐHTN ht t p : / / www lrc.tnu e du v n

Trang 33

Tìm kiếm và câu hỏi phức tạp

Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ lồng nhau hoặc qua phépkết nối

Tìm những nhà cung cấp đã cung cấp ít nhất một mặt hàng nào đó.

WHERE P# = ANY (SELECT P# FROM SP WHERE S# = 'S1 ‟)

Tìm tên những hãng cung cấp ít nhất một mặt hàng màu đỏ.

Trang 35

Số hóa bởi Trung tâm Học liệu –

Trong nhiều trường hợp có thể thay thế giữa các các mệnh đề „exists‟ với

IN hoặc NOT IN, EQUAL ANY tương đương với not equal all v.v

WHERE S# <> ALL (SELECT S# FROM SP)

Tóm lại, chương 1 trình bày những kiến thức cơ bản về cớ sở dữ liệu, câuvấn tin SQL, quá trình tối ưu hóa và ngôn ngữ lập trình bậc cao Đây là cơ sở lýthuyết nền tảng cho qua trình tối ưu hóa vấn tin Chương 2 sẽ trình bày các bướcphân rã và thay thế các câu SQL để nhằm mục đích tối ưu hóa câu vấn tin Tuynhiên, trong quá trình xử lý nhiều khi mỗi câu lệnh phải thực hiện nhiều phéptoán trong đó có phép toán có độ phức tạp cao như phép kết nối, tích đề các…Đểgiảm số lượng phép toán tăng tốc độ xử lý và tiết kiệm không gian nhớ người tađưa ra giải pháp tối ưu hóa câu lệnh Vấn đề tối ưu thực hiện ở đây có thể là tối

ưu về tốc độ nghĩa là làm sao cho thời gian xử lý nhỏ nhất; tối ưu về tài nguyênnghĩa là sử dụng bộ nhớ ít nhất Tùy tình huống cụ thể khi không tối ưu cả hai

Trang 36

Số hóa bởi Trung tâm Học liệu –

Trang 37

Số hóa bởi Trung tâm Học liệu –

2.1 Tối ưu hóa câu lệnh SQL

Tối ưu hóa dữ liệu là một chủ đề lớn và bao hàm nhiều vấn đề, nhiều yếu

tố, bao gồm cả cấu hình phần mềm, cài đặt Windows, xử lý bộ đệm,… trong đó,vấn đề tối ưu hóa các câu truy vấn là vấn đề quan trọng ảnh hưởng đến hiệu quả

xử lý cơ sở dữ liệu

Tối ưu hóa vấn tin nhằm chọn ra điểm tốt nhất trong không gian lời giảicủa tất cả chiến lược khả thi, hay biến đổi câu vấn tin cấp cao thành một câu vấntin tương ở mức thấp hơn nhưng đều cho ra cùng kết quả

Ngôn ngữ thao tác dữ liệu gồm:

Đại số quan hệ (biểu thức đại số)

SQL (ánh xạ)

Luật Datalog

Có nhiều phương pháp tối ưu hóa vấn tin nhưng cách nào giảm được thờigian thực thi và giảm thiểu chi phí tiêu dùng tài nguyên

2.2 Một số nguyên tắc trong tối ưu

1 Sử dụng lệnh UNION ALL thay cho lệnh UNION bất cứ khi nào có thể

Lệnh UNION ALL chạy nhanh hơn lệnh UNION vì nó không kiểm tracác bản ghi trùng lặp, trong khi đó lệnh UNION luôn luôn kiểm tra các bản ghixem có trùng lặp hay không

2 Sử dụng thêm lệnh SET NOCOUNT ON trong các stored procedures

Thông thường T-SQL sẽ thông báo tổng số các bản ghi bị tác động khithực thi một lệnh SQL Tuy nhiên, nếu chúng ta sử dụng lệnh SET NOCOUNT

ON ở đầu các stored procedures thì hệ thống không trả về thông báo nữa Việcnày tiết kiệm lưu lượng mạng chút xíu

3 Hạn chế tối đa việc sử dụng mệnh đề DISTINCT

Trang 38

Số hóa bởi Trung tâm Học liệu –

Trang 39

Số hóa bởi Trung tâm Học liệu –

ĐHTN ht t p : / / www lrc.tnu e du v n

Số hóa bởi Trung tâm Học liệu –

ĐHTN ht t p : / / www lrc.tnu e du v n

18

4 Hạn chế sử dụng các trigger, thay bằng các constraints khi có thể

Sử dụng constraints hiệu quả hơn các triggers

5 Sử dụng SYSINDEXES để lấy số bản ghi

Hầu hết chúng ta sử dụng lệnh COUNT(*) để lấy số bản ghi, tuy nhiênbảng sysindexes lưu trữ tổng số bản ghi của tất cả các bảng dữ liệu người dùng

do vậy chúng ta có thể lấy từ bảng này thay vì dùng lệnh COUNT(*) Ngoài racòn có một số cách khác nữa

Ví dụ: SELECT rows FROM sysindexes WHERE id = OBJECT_ID('table_name')

6 Sử dụng VIEW và Stored Procedure thay cho các câu lệnh truy vấn phức tạp

7 Sử dụng giải mã nếu có thể

Để tránh phải duyệt một bản ghi nhiều lần, DECODE có thể được sử dụngtrong các câu lệnh GROUP BY và ORDER BY

Ví dụ:

SELECT id FROM employee

WHERE name LIKE 'Arun%'

and location = 'USA';

thay vì

SELECT DECODE(location,'USA',id,NULL) id FROM employee

WHERE name LIKE 'Arun%';

8 Giảm thiểu các sub query

SELECT name FROM employee WHERE (sal, experience) = (SELECTMAX (sal), MAX (experience) FROM employee_details) AND dept =

'Accounts';

9 Chỉ nên so sánh các loại giá trị cùng kiểu

So sánh cùng kiểu giúp hệ thống không phải chuyển kiểu do đó cải thiệntốc độ bớt thao tác chuyển đổi kiểu dữ liệu

Ví dụ:

Trang 40

Số hóa bởi Trung tâm Học liệu –

Ngày đăng: 06/01/2019, 00:24

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Lê Huy Thập, Giáo trình kỹ thuật lập trình Tập 1, NXB KHOA HỌC TỰ NHIÊN VÀ CÔNG NGHỆ, 300p, 2008 Sách, tạp chí
Tiêu đề: Giáo trình kỹ thuật lập trình Tập 1
Nhà XB: NXB KHOA HỌC TỰNHIÊN VÀ CÔNG NGHỆ
[2] M.Tamer Ozsu, Patrick Valduriez. Nguyên lý các hệ cơ sở dữ liệu phân tán. Trần Đức Quang biên dịch. NXB Thống kê, 1999 Sách, tạp chí
Tiêu đề: Nguyên lý các hệ cơ sở dữ liệu phân tán
Nhà XB: NXB Thống kê
[3] Đỗ Xuân Lôi, Cấu trúc dữ liệu và Giải thuật, NXB Khoa học và kỹ thuật Sách, tạp chí
Tiêu đề: Cấu trúc dữ liệu và Giải thuật
Nhà XB: NXB Khoa học và kỹ thuật
[4] C. Zaniolo and M.A. Melkanoff, On the design of relational database syschema ACM Trans. On Database systems 6:1 pp 1-47, 1984 Sách, tạp chí
Tiêu đề: On the design of relational database syschema ACM Trans
[5] M.M. Zloof, Query – by – example: a database language, IBM System J 16:4, pp 324-343, 1977 Sách, tạp chí
Tiêu đề: Query – by – example: a database language

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w