微課sql最佳化(1)、基礎概念介紹
資訊系統執行緩慢,伺服器已無法擴充套件? --煩惱
系統效能時快時慢,不知如何最佳化? --鬱悶
每次程式釋出後,系統異常緩慢? --痛苦
各種報表程式,查不出結果? --迷茫
《微課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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微課sql最佳化(13)、表的連線方法(2)-基礎概念SQL
- Sql介紹 與 Sql基礎查詢SQL
- 1、Oracle 基礎介紹Oracle
- Spring基礎只是—AOP的概念介紹Spring
- RocketMQ系列1:基礎介紹MQ
- 【Kubernetes系列】第2篇 基礎概念介紹
- mysql中SQL的概念介紹MySql
- 微課sql最佳化(17)、不改程式碼,最佳化SQL(1)-最佳化方法總結SQL
- OpenGL Android課程四:介紹紋理基礎Android
- 強化學習理論-第1課-基礎概念強化學習
- Oracle cluster table(1)_概念介紹Oracle
- 1章 基礎概念
- java 基礎概念 (1)Java
- 微課sql最佳化(12)、表的連線方法(1)-幫助網友最佳化報表SQLSQL
- Pandas基礎介紹
- Elasticsearch 基礎介紹Elasticsearch
- SQL最佳化必懂概念(一):基數SQL
- GaussDB資料庫基礎函式介紹1資料庫函式
- 數值分析1 - 誤差概念介紹
- 通俗地說決策樹演算法(一)基礎概念介紹演算法
- JDBC的基礎介紹JDBC
- ActiveMq的基礎介紹MQ
- MySQL 教程基礎介紹MySql
- 微課sql最佳化(4)、幫助“表姐”最佳化報表SQL
- Dubbo入門(1) - 基礎概念
- OSPF介紹及基礎配置
- Django基礎教程之介紹Django
- 第1天-行業介紹和計算機基礎行業計算機
- 『學了就忘』Linux基礎 — 1、UNIX系統介紹Linux
- 課程介紹
- TypeScript Mixins 概念介紹TypeScript
- JavaFX基礎:1: 簡介Java
- 『現學現忘』Git基礎 — 1、版本控制系統介紹Git
- Android RxJava:基礎介紹與使用AndroidRxJava
- 資料倉儲基礎介紹
- Jumpserver基礎運維-01介紹Server運維
- 02-ASP.Net(基礎介紹)ASP.NET
- 【ES6基礎】const介紹