使用點陣圖連線索引最佳化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/26736162/viewspace-2139014/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用點陣圖連線索引優化OLAP查詢索引優化
- 使用點陣圖索引和星形轉換優化OLAP查詢索引優化
- Oracle索引——點陣圖索引Oracle索引
- 點陣圖索引(Bitmap Index)——從B*樹索引到點陣圖索引索引Index
- 點陣圖索引.sql索引SQL
- 連線查詢
- 點陣圖索引(Bitmap Index)——索引共用索引Index
- 點陣圖索引(Bitmap Index)——點陣圖索引與資料DML鎖定索引Index
- Oracle-點陣圖索引Oracle索引
- 【最佳化】模糊查詢索引問題索引
- SQL連線查詢SQL
- oracle 連線查詢Oracle
- 【Oracle】--連線查詢Oracle
- 【基礎知識】索引--點陣圖索引索引
- sql 連線查詢例項(left join)三表連線查詢SQL
- MySQL-10.索引最佳化與查詢最佳化MySql索引
- MySQL索引原理及慢查詢最佳化MySql索引
- oracle 點陣圖索引(bitmap index)Oracle索引Index
- 點陣圖索引:原理(BitMap index)索引Index
- 點陣圖索引(bitmap-index)索引Index
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- select查詢之四:連線查詢
- MySQL之連線查詢MySql
- 【點陣圖索引】在點陣圖索引列上進行更新操作的鎖代價研究索引
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 【索引】oracle查詢使用索引和不使用索引的比較索引Oracle
- Python點陣圖索引學習Python索引
- 點陣圖索引的工作原理 - Richard索引
- bitmap index點陣圖索引系列(一)Index索引
- 使用SSMS連線和查詢 SQL Server 例項SSMSQLServer
- 【索引】Oracle查詢指定索引提高查詢效率索引Oracle
- 《MySQL 進階篇》十五:索引最佳化和查詢最佳化MySql索引
- oracle連線查詢詳解Oracle
- MySQL學習-連線查詢MySql
- Hibernate連線查詢join
- 【janes】多表查詢 外連線