課程實踐(二)續
案例二
點選(此處)摺疊或開啟
-
--drop_customers_indexes.sql. 刪除customers表上除主鍵索引外的所有索引
-
SET TERMOUT OFF
-
--儲存當前SQL*Plus系統變數的設定
-
STORE SET sqlplus_settings replace
-
--保護SQL*Plus buffer
-
SAVE buffer.sql replace
-
SET TIMING OFF HEADING OFF VERIFY OFF AUTOTRACE OFF FEEDBACK OFF
-
--儲存生成的SQL語句
-
SPOOL dait.sql
-
SELECT \'DROP INDEX \' || i.index_name || \';\' FROM user_indexes i
-
WHERE i.table_name = \'CUSTOMERS\'
-
AND NOT EXISTS
-
(SELECT \'x\' FROM user_constraints c
-
WHERE c.index_name = i.index_name AND c.table_name = i.table_name AND c.status = \'ENABLED\');
-
SPOOL OFF
-
-
@dait
-
--恢復SQL*Plus buffer
-
GET buffer.sql NOLIST
-
--恢復SQL*Plus系統變數設定
-
@sqlplus_settings
-
SET TERMOUT ON
-
-
--執行drop_customers_indexes.sql指令碼
-
sh@TESTDB11>@drop_customers_indexes.sql
-
-
--query00.sql. 沒有索引走全表掃描,成本比較高
-
-
SET ECHO ON
-
SET TIMING ON
-
SET AUTOTRACE TRACEONLY
-
SET PAGESIZE 1000
-
-
@flush.sql
-
SELECT /*+ FULL(c) */ c.* FROM customers c
-
WHERE cust_gender = \'M\' AND cust_postal_code = 40804 AND cust_credit_limit = 10000;
-
-
SET TIMING OFF
-
SET AUTOTRACE OFF
-
-
--執行query00.sql,
- sh@TESTDB11>@query00.sql
點選(此處)摺疊或開啟
-
--在CUSTOMERS表上建立三個索引,並檢視
-
sh@TESTDB11>SET ECHO ON
-
sh@TESTDB11>CREATE INDEX idx_cust_gender ON customers (cust_gender) NOLOGGING COMPUTE STATISTICS;
-
sh@TESTDB11>CREATE INDEX idx_cust_postal_code ON CUSTOMERS(cust_postal_code) NOLOGGING COMPUTE STATISTICS;
-
sh@TESTDB11>CREATE INDEX idx_cust_credit_limit ON CUSTOMERS(cust_credit_limit) NOLOGGING COMPUTE STATISTICS;
-
-
SELECT ui.table_name, DECODE(ui.index_type, \'NORMAL\', ui.uniqueness, ui.index_type) AS index_type,
-
ui.index_name
-
FROM user_indexes ui WHERE ui.table_name = \'CUSTOMERS\'
- ORDER BY ui.table_name, ui.uniqueness DESC;
點選(此處)摺疊或開啟
-
--開始監視customers表上的索引
-
sh@TESTDB11>ALTER INDEX customers_pk MONITORING USAGE;
-
sh@TESTDB11>ALTER INDEX idx_cust_gender MONITORING USAGE;
-
sh@TESTDB11>ALTER INDEX idx_cust_credit_limit MONITORING USAGE;
-
sh@TESTDB11>ALTER INDEX idx_cust_postal_code MONITORING USAGE;
-
-
--檢視索引使用情況
- sh@TESTDB11>SELECT * FROM v$object_usage;
點選(此處)摺疊或開啟
-
--query01.sql
-
--優化器選擇使用一個索引, 走INDEX FULL SCAN, 成本比全表掃描低.
-
SET ECHO ON
-
SET TIMING ON
-
SET AUTOTRACE TRACEONLY
-
SET PAGESIZE 1000
-
@flush.sql
-
SELECT /*+ INDEX(c) */ c.* FROM customers
-
WHERE cust_gender = \'M\' AND cust_postal_code = 40804 AND cust_credit_limit = 10000;
-
-
SET TIMING OFF
-
SET AUTOTRACE OFF
-
-
--執行query01.sql指令碼,
- sh@TESTDB11>@query01.sql
點選(此處)摺疊或開啟
-
--query02.sql
-
--走點陣圖索引,比全表掃描還慢
-
SET ECHO ON
-
SET TIMING ON
-
SET AUTOTRACE TRACEONLY
-
SET PAGESIZE 1000
-
-
@flush.sql
-
SELECT /*+ INDEX_COMBINE(c) */ c.* FROM customers c
-
WHERE cust_gender = \'M\' AND cust_postal_code = 40804 AND cust_credit_limit = 10000;
-
-
SET TIMING OFF
-
SET AUTOTRACE OFF
-
點選(此處)摺疊或開啟
-
--檢視索引的使用情況
- sh@TESTDB11>SELECT * FROM v$object_usage;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1072461/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實踐JavaWeb課程專案JavaWeb
- 作業系統課程實踐報告作業系統
- [Triton課程筆記] 2.2.3 BLS續筆記
- 武漢專場|第二期《資料安全實踐專題培訓》課程即將開課
- 課程實習
- 持續交付體系在高德的實踐歷程
- 軟體工程的實踐專案課程的自我目標軟體工程
- spark sql 實踐(續)SparkSQL
- 2019年二季度課程安排
- 資料採集與融合技術實驗課程作業二
- 持續整合領域的智慧排程探索及實踐 - 黃佳鑫
- Python課程程式碼實現Python
- 持續交付探索與實踐(二):自動化工具鏈建設
- 我的慕課實戰課程上線了
- 課程報名丨“重大活動”網路安全保障中的攻守實踐
- Redis Cluster深入與實踐(續)Redis
- Flutter web 持續整合實踐FlutterWeb
- 大資料公開課系列課程第二季-趙強老師-專題視訊課程大資料
- 北航OS課程筆記--二、系統引導筆記
- 【課程筆記】中科大凸優化(二)筆記優化
- TDD 實踐-FizzFuzzWhizz(二)
- DHCP最佳實踐(二)
- (續)Css in js 一次實踐CSSJS
- Jenkins持續整合 入門實踐Jenkins
- Artifactory & GitLab CI持續整合實踐Gitlab
- CI/CD 持續整合部署實踐
- 開源實踐 | 攜程在OceanBase的探索與實踐
- 開源實踐 | 攜程在 OceanBase 的探索與實踐
- 《python運維和開發實戰-高階篇》視訊課程筆記二Python運維筆記
- Docker實踐過程中遇到的一些問題總結(持續更新中)Docker
- MIT 6.824 分散式系統課程第二課:RPC 和多執行緒MIT分散式RPC執行緒
- Modern PHP(二)良好實踐PHP
- Nginx入門實踐(二)Nginx
- 第一章:Linux基礎實踐-CSDN就業班-專題視訊課程Linux就業
- 線上課程|儲存與計算分離,京東在Elasticsearch上的實踐分享Elasticsearch
- windows核心程式設計課程實踐---多執行緒檔案搜尋器(MFC介面)Windows程式設計執行緒
- 《計算機網路實驗課程》——Wireshark實驗計算機網路
- 協程在RN中的實踐
- 資料結構與演算法課程筆記(二)資料結構演算法筆記