微課sql最佳化(1)、基礎概念介紹

orastar發表於2020-03-03
資訊系統執行緩慢,伺服器已無法擴充套件?                --煩惱
系統效能時快時慢,不知如何最佳化?                    --鬱悶
每次程式釋出後,系統異常緩慢?                      --痛苦
各種報表程式,查不出結果?                          --迷茫
《微課sql最佳化》幫您消除以上困惑,最佳化Oracle資料庫效能,提升使用者體驗,希望以下內容,對您有所幫助!

1、SQL最佳化的核心思想及目的


1、SQL最佳化的核心思想: 減少IO次數 (物理和邏輯)
2、SQL最佳化的目的:減少SQL執行時間

2、練習環境說明


create user  ht identified by ht;   --建立最佳化使用者
grant dba to ht;  --授權
create tablespace yh datafile '/u01/app/oracle/oradata/sndb1/yh01.dbf' size 1g autoextend off;--建立最佳化資料表空間
drop table ht.c_cons;
drop table ht.a_amt;
create table ht.c_cons(      --使用者資訊表
cons_no number primary key,   --使用者編號,主鍵
cons_name varchar2(100),       --使用者姓名
org_name varchar2(100),         --使用者單位
build_date date,                      --建戶日期
status varchar2(20)                 --使用者狀態,open、creating、close
) tablespace yh;
create table ht.a_amt(            --賬務資訊表
amt_id number primary key,   --賬務編號,主鍵
cons_no number,                   --使用者編號
amt_ym varchar2(20),            --賬務年月
amt number                          --出賬費用
) tablespace yh;


3、Query Optimization


? Rule-based optimizer (RBO):
– Based on fixed ranking of possible access paths
– Will be desupported with Oracle Database 10g 
? Cost-based optimizer (CBO):
– Introduced with Oracle7
– Based on object statistics

4、概念1、sql最佳化3要素


Cost-Based Optimization (CBO)
CBO uses statistical information about the objects being queried to determine the most cost-effective:
? Access paths   訪問路徑
? Join methods   聯接方式
? Join orders   聯接順序

5、概念2、基數與選擇性


基數(Cardinality):基數表示表中的行數。

選擇性: 表示謂詞從行集過濾特定數量的行。謂詞的選擇性表示有多少行符合查詢條件。選擇範圍從0.0到1.0。選擇性為0.0表示沒有從行集中選擇行,而選擇性為1.0表示選擇了所有行。當該值接近1.0時,該謂詞變得更具選擇性,因為該值接近0.0並且具有較小的選擇性(或更多的非選擇性),
                                  # rows satisfying a condition
Selectivity   =    -----------------------------------------------------

                                        Total # of rows  

SQL> select job,count(1) from scott.emp group by job;
JOB          COUNT(1)
--------------------------- ----------
CLERK         4
SALESMAN         4
PRESIDENT         1
MANAGER           3
ANALYST           2

6、課後練習


問題1、統計已銷戶使用者數量,請最佳化以下語句
select count(1) from ht.c_cons where status='close';


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442014/viewspace-2678248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章