使用點陣圖連線索引優化OLAP查詢
點陣圖連線索引,就是將事實表和維度表的ROWID提前進行對映,省去了連線時的開銷。
下面將點陣圖連線索引和一般的點陣圖索引進行比較。
看以下SQL語句:
如果分別在sales_A表上為prod_id, promo_id, channel_id列建立點陣圖索引,其執行計劃為:
然後建立點陣圖連線索引。
建立點陣圖索引,需要確保維度表的連結列上有唯一索引或主鍵,如果是複合主鍵,則需要將相關列都加入進來。
配置唯一性約束:
建立點陣圖連線索引:
檢視報告:
檢視新的執行計劃
結論:點陣圖連線索引效能更佳。
注意:當where條件中包含點陣圖連線索引的相關列的篩選條件時(上例中是prod_id=27),才會使用點陣圖連線索引。如果沒有這一句,將走全表掃描。
下面將點陣圖連線索引和一般的點陣圖索引進行比較。
看以下SQL語句:
點選(此處)摺疊或開啟
- select s.prod_id,s.promo_id,s.channel_id
-
from sales_A s, products_A pd, promotions_A pm, channels_A ch
where s.prod_id = pd.prod_id
and s.promo_id = pm.promo_id
and s.channel_id = ch.channel_id
and pd.prod_id = 27;
然後建立點陣圖連線索引。
建立點陣圖索引,需要確保維度表的連結列上有唯一索引或主鍵,如果是複合主鍵,則需要將相關列都加入進來。
配置唯一性約束:
點選(此處)摺疊或開啟
- alter table products_A add constraint products_pk primary key(prod_id);
點選(此處)摺疊或開啟
- create bitmap index sales_A_bjix
-
on sales_A
( pr.prod_id, pm.promo_id, ch.channel_id )
from sales_A a, products_A pr, promotions_A pm, channels_A ch
where a.prod_id = pr.prod_id
and a.promo_id = pm.promo_id
and a.channel_id = ch.channel_id
tablespace sh
nologging;
點選(此處)摺疊或開啟
- column index_name format a15
-
column inner_table format a15
column inner_col format a15
column outer_table format a15
column outer_col format a15
select index_name, inner_table_name inner_table, inner_table_column inner_col,
outer_table_name outer_table, outer_table_column outer_col
from user_join_ind_columns
where index_name = 'SALES_A_BJIX';
INDEX_NAME INNER_TABLE INNER_COL OUTER_TABLE OUTER_COL
--------------- --------------- --------------- --------------- ---------------
SALES_A_BJIX SALES_A PROD_ID PRODUCTS_A PROD_ID
SALES_A_BJIX SALES_A PROMO_ID PROMOTIONS_A PROMO_ID
SALES_A_BJIX SALES_A CHANNEL_ID CHANNELS_A CHANNEL_ID
結論:點陣圖連線索引效能更佳。
注意:當where條件中包含點陣圖連線索引的相關列的篩選條件時(上例中是prod_id=27),才會使用點陣圖連線索引。如果沒有這一句,將走全表掃描。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-2083541/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用點陣圖連線索引最佳化OLAP查詢索引
- 使用點陣圖索引和星形轉換優化OLAP查詢索引優化
- 【資料庫】查詢優化之子連線優化資料庫優化
- MySQL索引與查詢優化MySql索引優化
- 查詢中讓優化器使用複合索引優化索引
- 通過點陣圖篩選優化資料倉儲查詢效能優化
- MySQL-效能優化-索引和查詢優化MySql優化索引
- [Hive]Hive中表連線的優化,加快查詢速度Hive優化
- MySQL 索引及查詢優化總結MySql索引優化
- MySQL索引原理及慢查詢優化MySql索引優化
- 【oracle 效能優化】組合索引查詢。Oracle優化索引
- MongoDB範圍查詢的索引優化MongoDB索引優化
- Oracle索引——點陣圖索引Oracle索引
- 點陣圖索引(Bitmap Index)——從B*樹索引到點陣圖索引索引Index
- SQL連線查詢優化[姊妹篇.第五彈]SQL優化
- mysql效能優化-慢查詢分析、優化索引和配置MySql優化索引
- APP查詢圖片優化APP優化
- msyql千萬級別查詢優化之索引優化索引
- MS SQL SERVER索引優化相關查詢SQLServer索引優化
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- 點陣圖索引.sql索引SQL
- 點陣圖索引(Bitmap Index)——索引共用索引Index
- 點陣圖索引(Bitmap Index)——點陣圖索引與資料DML鎖定索引Index
- Oracle-點陣圖索引Oracle索引
- SQL連線查詢SQL
- oracle 連線查詢Oracle
- 【Oracle】--連線查詢Oracle
- sql 連線查詢例項(left join)三表連線查詢SQL
- 【基礎知識】索引--點陣圖索引索引
- 優化-mysql子查詢索引失效問題解決優化MySql索引
- MySQL連線查詢驅動表被驅動表以及效能優化MySql優化
- 查詢優化優化
- MySQL: 使用explain 優化查詢效能MySqlAI優化
- oracle 點陣圖索引(bitmap index)Oracle索引Index
- 點陣圖索引:原理(BitMap index)索引Index
- 點陣圖索引(bitmap-index)索引Index
- MySQL之連線查詢和子查詢MySql