Call count cpu elapsed disk query current rows

Một phần của tài liệu Giới thiệu và tối ưu hóa câu lệnh SQL trong hệ tính hóa đơn và quản lý khách hàng công ty cấp nước thành phố Hồ Chí Minh (Trang 28 - 29)

Index kết hợp với Hint Text Trong phần mềm Tra cứu Văn bản Pháp qui

Sau một thời gian thử nghiệm, phân tích kết quả đạt đợc và cha đạt đợc của các lần tối u câu lệnh SQL trong phần mềm Tra cứu Văn bản pháp qui chúng tôi đã rút ra đợc phơng thức tối u tốt nhất cho phần mềm này là sử dụng Index phức kết hợp với Hint Text.

 Sử dụng Index phức:

Vì phần mềm này sử dụng CSDL phân tán nằm rải khắp các tỉnh, các ngành, các bộ và của Văn phòng Chính phủ cho nên trong các bảng, các Snapshot (chứa dữ liệu của các văn bản) đợc Index theo thứ tự mã địa phơng, mã văn bản rồi sau đó mới đến các cột khác nếu có. Điều này sẽ đảm bảo trong các View tổng hợp dữ liệu từ các bảng sẽ đợc phân đoạn ngang dựa trên mã địa phơng, nh vậy mỗi khi truy nhập đến một văn bản của một địa phơng nào đó thì Oracle sẽ chỉ duyệt trên đoạn chứa văn bản có mã địa phơng đã chỉ ra.

 Sử dụng Hint Text:

Hint Text là những chỉ dẫn thi hành để báo cho Oracle biết thực hiện câu lệnh SQL theo cách mong muốn. Trong phần mềm Tra cứu Văn bản pháp qui khi truy xuất một văn bản nào đều dựa trên mã địa phơng và số văn bản. Để lấy ra tên địa phơng đã phát hành văn bản thì phải kết nối bảng chứa văn bản với bảng chứa danh mục các địa phơng. Rõ ràng trong trờng hợp này thực hiện phép chọn trớc sau đó rồi thực hiện phép kết nối, tuy nhiên Oracle luôn kết nối giữa bảng chứa các văn bản và bảng chứa danh mục các địa phơng qua mã địa phơng trớc phép chọn dựa trên mã văn bản và mã địa địa phơng. Điều này rất bất hợp lý vì toàn bộ các văn bản của một địa phơng đều có cùng một mã địa phơng do đó phải kết nối toàn bộ các văn bản của địa phơng đó, trong khi đó nếu thực hiện phép chọn trớc thì chỉ lấy ra duy nhất một văn bản rồi kết nối với danh mục địa ph ơng để lấy ra tên địa phơng đã phát hành văn bản đó.

Do đó giải pháp để khắc phục là thêm chỉ thị thực hiện kết nối ORDERD để các bảng kết nối theo thứ tự xuất hiện sau mệnh đề FROM.

Nh vậy sau khi kết hợp cả hai phơng pháp trên thì số lần duyệt để truy xuất tới văn bản sẽ là ít nhất (qua index trực tiếp) và số lợng các hàng tham gia vào kết nối là nhỏ nhất (một hàng) do đó thời gian tăng lên rất nhiều lần vì thao tác kết nối từ n văn bản (toàn bộ văn bản của một địa phơng) còn lại chỉ kết nối một văn bản đã tìm ra.

Dới đây là một ví dụ trong hàng chục câu lệnh nh vậy.

 Câu lệnh cha đợc tối u

SELECT V_CCTH.MA_CC,V_CCTH.MA_DP_CC,V_VBCC.MA_LOAI_VB,V_VBCC.MA_CHU_DE, V_VBCC.SO,V_VBCC.KY_HIEU,V_VBCC.NGAY_PH,V_VBCC.NGUOI_KY,V_VBCC.TRICH_YEU, V_VBCC.SO,V_VBCC.KY_HIEU,V_VBCC.NGAY_PH,V_VBCC.NGUOI_KY,V_VBCC.TRICH_YEU, V_VBCC.TOAN_VAN,V_CCTH.MA_DP_VB,V_CCTH.MA_VB

FROM

V_CCTH V_CCTH,V_VBTH V_VBCC WHERE V_CCTH.MA_CC = :b1 AND V_CCTH.MA_DP_CC = :b2 AND V_CCTH.MA_DP_VB = :b3 AND V_CCTH.MA_VB = :b4 AND V_VBCC.MA_VB = :b2 AND V_CCTH.MA_DP_VB = :b3 AND V_CCTH.MA_VB = :b4 AND V_VBCC.MA_VB =

V_CCTH.MA_CC AND V_VBCC.MA_DP = V_CCTH.MA_DP_CCThời gian thực hiện Thời gian thực hiện

call count cpu elapsed disk query current rows--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---

Parse 1 0.02 0.02 0 0 0 0Execute 2 0.06 11.09 0 0 2 6 Execute 2 0.06 11.09 0 0 2 6

Fetch 1 1.85 10.51 520 8245 1954 1--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- total 4 1.93 21.62 520 8245 1956 7 Cây phân tích lệnh

Một phần của tài liệu Giới thiệu và tối ưu hóa câu lệnh SQL trong hệ tính hóa đơn và quản lý khách hàng công ty cấp nước thành phố Hồ Chí Minh (Trang 28 - 29)