Files
doc-exports/docs/dws/dev/dws_06_0357.html
luhuayi 177cd61a57 DWS DEVG 910.211 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: luhuayi <luhuayi@huawei.com>
Co-committed-by: luhuayi <luhuayi@huawei.com>
2025-05-05 07:44:03 +00:00

173 lines
47 KiB
HTML

<a name="EN-US_TOPIC_0000001811634773"></a><a name="EN-US_TOPIC_0000001811634773"></a>
<h1 class="topictitle1">CREATE MATERIALIZED VIEW</h1>
<div id="body0000001544594334"><div class="section" id="EN-US_TOPIC_0000001811634773__section564195035610"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001811634773__p1321215541223">Creates a materialized view.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001811634773__section72510544561"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001811634773__ul9923620172817"><li id="EN-US_TOPIC_0000001811634773__li10913111122515">The base table of a materialized view can be a row-store table, column-store table, H-Store table, partitioned table, or a specified partition, foreign table, or other materialized views. However, temporary tables (such as global, volatile, and common temporary tables) are not allowed. Starting from version 910.200, hot and cold tables are supported. Note that it is not possible to specify partitions for automatically partitioned tables.</li><li id="EN-US_TOPIC_0000001811634773__li1592342012815">Materialized views do not allow <strong id="EN-US_TOPIC_0000001811634773__b919615593271">INSERT</strong>, <strong id="EN-US_TOPIC_0000001811634773__b42781102817">UPDATE</strong>, <strong id="EN-US_TOPIC_0000001811634773__b53126419280">MERGE INTO</strong>, or <strong id="EN-US_TOPIC_0000001811634773__b1362126202817">DELETE </strong>operations.</li><li id="EN-US_TOPIC_0000001811634773__li105311832192811">The result of each query to the materialized view saved to ensure that the query results are the same each time. After the <strong id="EN-US_TOPIC_0000001811634773__b151313495311">BUILD IMMEDIATE</strong> or <strong id="EN-US_TOPIC_0000001811634773__b1097318513317">REFRESH</strong> operation, the correct result can be queried in the materialized view.</li><li id="EN-US_TOPIC_0000001811634773__li17504202452211">A node group cannot be specified for a materialized view using syntax. A node group can be specified for the base table of a materialized view. The materialized view can inherit the node group information from the base table. The node groups of multiple base tables must be the same.</li><li id="EN-US_TOPIC_0000001811634773__li117671596333">To create a materialized view, you must have the CREATE permission for the schema and the SELECT permission for the base table or column.</li><li id="EN-US_TOPIC_0000001811634773__li1376765910332">To query a materialized view, you must have the SELECT permission on the materialized view.</li><li id="EN-US_TOPIC_0000001811634773__li1776725911336">To refresh a materialized view, you must have the INSERT permission on the materialized view and SELECT permission on the base table or column.</li><li id="EN-US_TOPIC_0000001811634773__li10767359153313">Materialized views support fine-grained permissions such as ANALYZE, VACUUM, ALTER, and DROP.</li><li id="EN-US_TOPIC_0000001811634773__li27671359153310">Materialized views support permission transfer through the <strong id="EN-US_TOPIC_0000001811634773__b148472055621">transfer with grant</strong> option.</li><li id="EN-US_TOPIC_0000001811634773__li20334198143412">Materialized views do not support higher-level security control. In scenarios where the SELECT permission is restricted, for example, a base table has row-level access control or masking policies or its owner is a private user, materialized views cannot be created. If a materialized view already exists and an RLS or masking policy is added to the base table or the owner of the base table is changed to a private user, the materialized view can be queried but cannot be refreshed.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001811634773__section710713441971"><h4 class="sectiontitle">Constraints</h4><ul id="EN-US_TOPIC_0000001811634773__ul14107104411712"><li id="EN-US_TOPIC_0000001811634773__li910654418711">Temporary tables cannot be included, including global temporary tables, volatile temporary tables, and common temporary tables.</li><li id="EN-US_TOPIC_0000001811634773__li710613441714">The CTE in the definition of a materialized view cannot contain other DML statements except the SELECT statement.</li><li id="EN-US_TOPIC_0000001811634773__li1210717443720">The base table of a materialized view cannot have masking policies and row-level access control, or belong to a private user. Masking policies and row-level access control may cause result set errors, while private users may cause problems such as materialized view refresh failures.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001811634773__section3346145712568"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen11677135812573"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">materialized_view_name</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">column_name</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">]</span>
<span class="p">[</span><span class="w"> </span><span class="n">BUILD</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">DEFERRED</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
<span class="p">[</span><span class="w"> </span><span class="n">REFRESH</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">COMPLETE</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">DEMAND</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">timestamptz</span><span class="p">)</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">EVERY</span><span class="w"> </span><span class="p">(</span><span class="nb">interval</span><span class="p">)</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span>
<span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">ENABLE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="n">QUERY</span><span class="w"> </span><span class="n">REWRITE</span><span class="w"> </span><span class="p">]</span>
<span class="p">[</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">{</span><span class="n">storage_parameter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">]</span>
<span class="p">[</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">REPLICATION</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ROUNDROBIN</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">HASH</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">column_name</span><span class="w"> </span><span class="p">[,...]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
<span class="k">AS</span><span class="w"> </span><span class="n">query</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen19621105316449"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">materialized_view_name</span>
<span class="p">[</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">column_name</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">]</span>
<span class="p">[</span><span class="w"> </span><span class="n">BUILD</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="p">]</span>
<span class="n">REFRESH</span><span class="w"> </span><span class="n">AUTO</span>
<span class="n">ENABLE</span><span class="w"> </span><span class="n">QUERY</span><span class="w"> </span><span class="n">REWRITE</span>
<span class="p">[</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">{</span><span class="n">storage_parameter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">]</span>
<span class="k">AS</span><span class="w"> </span><span class="n">query</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001811634773__section1561019065710"><a name="EN-US_TOPIC_0000001811634773__section1561019065710"></a><a name="section1561019065710"></a><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001811634773__ul62994211181"><li id="EN-US_TOPIC_0000001811634773__li1330072120810"><strong id="EN-US_TOPIC_0000001811634773__b1556452510812">BUILD DEFERRED | IMMEDIATE</strong><p id="EN-US_TOPIC_0000001811634773__p119101451089"><strong id="EN-US_TOPIC_0000001811634773__b09364247346">IMMEDIATE</strong> indicates that the latest data is included when the materialized view is created.</p>
<p id="EN-US_TOPIC_0000001811634773__p10910251686"><strong id="EN-US_TOPIC_0000001811634773__b1470384633513">DEFERRED</strong> indicates that data is included only when the materialized view is refreshed for the first time.</p>
</li><li id="EN-US_TOPIC_0000001811634773__li93006216815"><a name="EN-US_TOPIC_0000001811634773__li93006216815"></a><a name="li93006216815"></a><strong id="EN-US_TOPIC_0000001811634773__b541752951412">REFRESH</strong><p id="EN-US_TOPIC_0000001811634773__p113581276122">Specifies the refresh mode of a materialized view.</p>
<p id="EN-US_TOPIC_0000001811634773__p13872182034210">After a materialized view is created, the data in the materialized view reflects only the status of the base table at the creation time. When the data in the base table changes, you need to refresh the materialized view (<strong id="EN-US_TOPIC_0000001811634773__b486471019399">REFRESH MATERIALIZED VIEW</strong>) to update the data in the materialized view.</p>
<ul id="EN-US_TOPIC_0000001811634773__ul1185931191214"><li id="EN-US_TOPIC_0000001811634773__li1671561071219">Currently, only the <strong id="EN-US_TOPIC_0000001811634773__b19223172043918">COMPLETE</strong> refresh mode is supported, which refresh full data in the materialized view. Execute the query statement defined in the materialized view to update the materialized view.</li><li id="EN-US_TOPIC_0000001811634773__li13300421183">Refresh triggering mode.<p id="EN-US_TOPIC_0000001811634773__p209101551384"><a name="EN-US_TOPIC_0000001811634773__li13300421183"></a><a name="li13300421183"></a><strong id="EN-US_TOPIC_0000001811634773__b168651751184812">ON DEMAND</strong>: manual refresh on demand.</p>
<p id="EN-US_TOPIC_0000001811634773__p49101955814"><strong id="EN-US_TOPIC_0000001811634773__b582265917489">START WITH (timestamptz) | EVERY (interval)</strong>: scheduled refresh. <strong id="EN-US_TOPIC_0000001811634773__b237317141573">START WITH</strong> specifies the first refresh time and <strong id="EN-US_TOPIC_0000001811634773__b17723132035720">EVERY</strong> specifies the refresh interval. The value can be <strong id="EN-US_TOPIC_0000001811634773__b15958429145718">MONTH</strong>, <strong id="EN-US_TOPIC_0000001811634773__b1447473725719">DAY</strong>, <strong id="EN-US_TOPIC_0000001811634773__b64791039175719">HOUR</strong>, <strong id="EN-US_TOPIC_0000001811634773__b689015423570">MINUTE</strong>, or <strong id="EN-US_TOPIC_0000001811634773__b9832134485718">SECOND</strong>.</p>
</li></ul>
</li><li id="EN-US_TOPIC_0000001811634773__li25021326104520"><strong id="EN-US_TOPIC_0000001811634773__b9993922164514">REFRESH</strong> <strong id="EN-US_TOPIC_0000001811634773__b7113184017453">AUTO</strong><p id="EN-US_TOPIC_0000001811634773__p136381646466">Specifies the refresh method of a materialized view.</p>
</li><li id="EN-US_TOPIC_0000001811634773__li4300182119816"><strong id="EN-US_TOPIC_0000001811634773__b523926101411">ENABLE | DISABLE QUERY REWRITE</strong><p id="EN-US_TOPIC_0000001811634773__p129101951888">Indicates whether query rewriting is supported. By default, query rewriting is not supported.</p>
<p id="EN-US_TOPIC_0000001811634773__p95517325317">When <strong id="EN-US_TOPIC_0000001811634773__b1845414539505">ENABLE QUERY REWRITE</strong> is specified, the GUC parameter <strong id="EN-US_TOPIC_0000001811634773__b1033585925012">mv_rewrite_rule</strong> must be set to enable query rewriting for materialized views.</p>
<div class="note" id="EN-US_TOPIC_0000001811634773__note1538419614544"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001811634773__p733447135412">Query rewriting means that when a base table is queried, if a materialized view is created for the base table, the database system automatically determines whether the pre-calculated result in the materialized view can be used to process the query.</p>
<p id="EN-US_TOPIC_0000001811634773__p1633415785411">If a materialized view can be used, the pre-calculated result is directly read from the materialized view to accelerate the query.</p>
</div></div>
</li><li id="EN-US_TOPIC_0000001811634773__li53001721583"><strong id="EN-US_TOPIC_0000001811634773__b1949525211217">WITH ( { storage_parameter = value } [, ... ] )</strong><ul id="EN-US_TOPIC_0000001811634773__ul1128512761615"><li id="EN-US_TOPIC_0000001811634773__li87581249164">ORIENTATION<p id="EN-US_TOPIC_0000001811634773__p13650155361519"><a name="EN-US_TOPIC_0000001811634773__li87581249164"></a><a name="li87581249164"></a>Specifies the storage mode (row-store, column-store) for table data. This parameter cannot be modified once it is set.</p>
<ul id="EN-US_TOPIC_0000001811634773__ul19231132135716"><li id="EN-US_TOPIC_0000001811634773__li129878163577">Value range:<ul id="EN-US_TOPIC_0000001811634773__ul18650135391514"><li id="EN-US_TOPIC_0000001811634773__li7650125331519"><strong id="EN-US_TOPIC_0000001811634773__b1702439970103857">ROW</strong> indicates that table data is stored in rows.<p id="EN-US_TOPIC_0000001811634773__p13650953191514"><strong id="EN-US_TOPIC_0000001811634773__b614702346103857">ROW</strong> applies to OLTP service, which has many interactive transactions. An interaction involves many columns in the table. Using ROW can improve the efficiency.</p>
</li><li id="EN-US_TOPIC_0000001811634773__li18650175361518"><strong id="EN-US_TOPIC_0000001811634773__b521765277103857">COLUMN</strong> indicates that the data is stored in columns.<p id="EN-US_TOPIC_0000001811634773__p5650125321512"><strong id="EN-US_TOPIC_0000001811634773__b1664386607103857">COLUMN</strong> applies to the data warehouse service, which has a large amount of aggregation computing, and involves a few column operations.</p>
</li></ul>
</li><li id="EN-US_TOPIC_0000001811634773__li85118255574">Default value:<p id="EN-US_TOPIC_0000001811634773__p168721252104118"><a name="EN-US_TOPIC_0000001811634773__li85118255574"></a><a name="li85118255574"></a><strong id="EN-US_TOPIC_0000001811634773__b200419502441339">row</strong>: creates a row-store table.</p>
</li></ul>
</li><li id="EN-US_TOPIC_0000001811634773__li483915442182">Materialized views do not support the following storage types: foreign tables and time series tables.</li><li id="EN-US_TOPIC_0000001811634773__li14751141613017">enable_foreign_table_query_rewrite<p id="EN-US_TOPIC_0000001811634773__p446851713301"><a name="EN-US_TOPIC_0000001811634773__li14751141613017"></a><a name="li14751141613017"></a>Specifies whether to allow query rewriting on materialized views that contain foreign tables. This parameter must be used together with <strong id="EN-US_TOPIC_0000001811634773__b360118818569">ENABLE QUERY REWRITE</strong>.</p>
<p id="EN-US_TOPIC_0000001811634773__p9966322173012">The materialized view cannot detect the data changes in the foreign table. Specify this option if you want to enable query rewriting for materialized views that contain foreign tables.</p>
<p id="EN-US_TOPIC_0000001811634773__p8272132101913">Value range:</p>
<ul id="EN-US_TOPIC_0000001811634773__ul159014445196"><li id="EN-US_TOPIC_0000001811634773__li972912282014"><strong id="EN-US_TOPIC_0000001811634773__b1019313535588">on</strong>: allows query rewriting on materialized views that contain foreign tables.</li><li id="EN-US_TOPIC_0000001811634773__li151744181911"><strong id="EN-US_TOPIC_0000001811634773__b25282055155810">off</strong>: does not allow query rewriting on materialized views that contain foreign tables.</li></ul>
<p id="EN-US_TOPIC_0000001811634773__p0247134951917">Default value: <strong id="EN-US_TOPIC_0000001811634773__b193563775103857">off</strong></p>
</li><li id="EN-US_TOPIC_0000001811634773__li8666121105615">bitmap_columns<p id="EN-US_TOPIC_0000001811634773__p10686151115616"><a name="EN-US_TOPIC_0000001811634773__li8666121105615"></a><a name="li8666121105615"></a>The bitmap index is only applicable to the <strong id="EN-US_TOPIC_0000001811634773__b1837145055919">hstore_opt</strong> table. To use it, enable the table-level parameter <strong id="EN-US_TOPIC_0000001811634773__b1242411110018">enable_hstore_opt</strong> and set <strong id="EN-US_TOPIC_0000001811634773__b7748614018">bitmap_columns</strong> to the specified column. This is supported only by clusters of version 9.1.0.200 or later.</p>
</li><li id="EN-US_TOPIC_0000001811634773__li137475312585">secondary_part_num<p id="EN-US_TOPIC_0000001811634773__p19991125814577"><a name="EN-US_TOPIC_0000001811634773__li137475312585"></a><a name="li137475312585"></a>Specifies the number of level-2 partitions in a column-store table. This parameter applies only to H-Store column-store tables. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p17991358185715">Value range: <strong id="EN-US_TOPIC_0000001811634773__b0832183591">1</strong> to <strong id="EN-US_TOPIC_0000001811634773__b264831915917">32</strong></p>
<p id="EN-US_TOPIC_0000001811634773__p1699119580571">Default value: <strong id="EN-US_TOPIC_0000001811634773__b163661119841339">8</strong></p>
</li><li id="EN-US_TOPIC_0000001811634773__li59929517585">enable_hstore_opt<p id="EN-US_TOPIC_0000001811634773__p18991175815715"><a name="EN-US_TOPIC_0000001811634773__li59929517585"></a><a name="li59929517585"></a>When the <strong id="EN-US_TOPIC_0000001811634773__b877819813119">enable_hstore_opt</strong> table-level parameter is enabled, the <strong id="EN-US_TOPIC_0000001811634773__b553318131415">enable_hstore</strong> table-level parameter is also automatically enabled by default. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p1899119587571">Default value: <strong id="EN-US_TOPIC_0000001811634773__b47952853041339">false</strong></p>
</li><li id="EN-US_TOPIC_0000001811634773__li91572011185819">enable_turbo_store<p id="EN-US_TOPIC_0000001811634773__p399175810575"><a name="EN-US_TOPIC_0000001811634773__li91572011185819"></a><a name="li91572011185819"></a>Determines whether to create a turbo table (column-store tables). The parameter is only valid for column-store tables. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p4991145835712">Default value: <strong id="EN-US_TOPIC_0000001811634773__b1474922981">off</strong></p>
</li><li id="EN-US_TOPIC_0000001811634773__li12499809182"><p id="EN-US_TOPIC_0000001811634773__p89951571996"><a name="EN-US_TOPIC_0000001811634773__li12499809182"></a><a name="li12499809182"></a>mv_analyze_mode</p>
<p id="EN-US_TOPIC_0000001811634773__p158995425182">Determines the automatic analysis method for materialized views. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p972814345103">Value range:</p>
<p id="EN-US_TOPIC_0000001811634773__p175038451107"><strong id="EN-US_TOPIC_0000001811634773__b0749511524">none</strong>: indicates that the materialized view does not automatically execute <strong id="EN-US_TOPIC_0000001811634773__b398220172217">ANALYZE</strong> after being refreshed.</p>
<p id="EN-US_TOPIC_0000001811634773__p32040151216"><strong id="EN-US_TOPIC_0000001811634773__b3709221522">light</strong>: indicates that the materialized view performs light analysis after being refreshed.</p>
<p id="EN-US_TOPIC_0000001811634773__p99281732131214">Default value: <strong id="EN-US_TOPIC_0000001811634773__b4926133816214">light</strong></p>
</li><li id="EN-US_TOPIC_0000001811634773__li1074616494186">mv_pck_column<p id="EN-US_TOPIC_0000001811634773__p2783104912182"><a name="EN-US_TOPIC_0000001811634773__li1074616494186"></a><a name="li1074616494186"></a>Specifies a partial clustering storage for a materialized view. During the data import process to a column-store table, the data is partially sorted according to the specified column(s). This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p7783104916180">Enable <strong id="EN-US_TOPIC_0000001811634773__b89889514519">mv_pck_column</strong> and set it to a specified column.</p>
</li><li id="EN-US_TOPIC_0000001811634773__li13589195917186">mv_support_function_type<p id="EN-US_TOPIC_0000001811634773__p460610590182"><a name="EN-US_TOPIC_0000001811634773__li13589195917186"></a><a name="li13589195917186"></a>Enables the use of function attributes in the query statements when creating materialized views. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p0606165951813">Value range:</p>
<p id="EN-US_TOPIC_0000001811634773__p16606115920186"><strong id="EN-US_TOPIC_0000001811634773__b1292412302614">stable</strong>: indicates that functions of the STABLE and IMMUTABLE types can be used in query statements.</p>
<p id="EN-US_TOPIC_0000001811634773__p1860615910185"><strong id="EN-US_TOPIC_0000001811634773__b14215133662">volatile</strong>: indicates that functions of the VOLATILE, STABLE, and IMMUTABLE types can be used in query statements.</p>
<p id="EN-US_TOPIC_0000001811634773__p560675912185">Default value: empty</p>
</li><li id="EN-US_TOPIC_0000001811634773__li7260204817197">excluded_inactive_tables<p id="EN-US_TOPIC_0000001811634773__p1429695018194"><a name="EN-US_TOPIC_0000001811634773__li7260204817197"></a><a name="li7260204817197"></a>Specifies that the materialized view will not be invalidated when there are data changes in the underlying base table. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p1164845813199">Set <strong id="EN-US_TOPIC_0000001811634773__b9787115492712">excluded_inactive_tables</strong> to <strong id="EN-US_TOPIC_0000001811634773__b519011762819">schemaName1.tableName1,schemaName2.tableName2</strong>.</p>
<p id="EN-US_TOPIC_0000001811634773__p72969501198">Default value: empty</p>
</li><li id="EN-US_TOPIC_0000001811634773__li152921513161918">force_rewrite_timeout<p id="EN-US_TOPIC_0000001811634773__p23157139194"><a name="EN-US_TOPIC_0000001811634773__li152921513161918"></a><a name="li152921513161918"></a>Allows query rewrite within a specified time interval after refresh, regardless of the freshness of the data in the materialized view. This is supported only by clusters of version 9.1.0.200 or later.</p>
<p id="EN-US_TOPIC_0000001811634773__p1831517135199">The unit is second. The default value is <strong id="EN-US_TOPIC_0000001811634773__b128328360234">0</strong>.</p>
</li></ul>
</li><li id="EN-US_TOPIC_0000001811634773__li6716153814574">TABLESPACE tablespace_name<p id="EN-US_TOPIC_0000001811634773__p0713114614579"><a name="EN-US_TOPIC_0000001811634773__li6716153814574"></a><a name="li6716153814574"></a>Specifies a tablespace for V3 storage. If <strong id="EN-US_TOPIC_0000001811634773__b091043442415">default_tablespace</strong> is empty, the default tablespace of the database is used. This is supported only by clusters of version 9.1.0.200 or later.</p>
</li><li id="EN-US_TOPIC_0000001811634773__li12170214191717"><strong id="EN-US_TOPIC_0000001811634773__b16608755112118">DISTRIBUTE BY</strong><p id="EN-US_TOPIC_0000001811634773__p678184131814">Specifies how the table is distributed or replicated between DNs.</p>
<p id="EN-US_TOPIC_0000001811634773__p878113410189">Value range:</p>
<ul id="EN-US_TOPIC_0000001811634773__ul77811744185"><li id="EN-US_TOPIC_0000001811634773__li478194171815"><strong id="EN-US_TOPIC_0000001811634773__b437178017103857">REPLICATION</strong>: Each row in the table exists on all DNs, that is, each DN has complete table data.</li><li id="EN-US_TOPIC_0000001811634773__li1578124191812"><strong id="EN-US_TOPIC_0000001811634773__b8456524103857">ROUNDROBIN</strong>: Each row in the table is sent to each DN in turn. Therefore, data is evenly distributed on each DN. This value is supported only in 8.1.2 or later.</li><li id="EN-US_TOPIC_0000001811634773__li17829414186"><strong id="EN-US_TOPIC_0000001811634773__b1951015118016">HASH</strong>: Each row of the table will be placed into all the DNs based on the hash value of the specified column.</li></ul>
<p id="EN-US_TOPIC_0000001811634773__p17660144716194">Default value: determined by the <strong id="EN-US_TOPIC_0000001811634773__b184412817112">default_distribution_mode</strong> parameter.</p>
<div class="note" id="EN-US_TOPIC_0000001811634773__note10149425203912"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001811634773__p0149182518391">When the materialized view is distributed in hash mode, data skew may occur. To check for data skews in materialized views, follow the same procedures used for detecting data skews in regular tables. For details, see "Checking for Data Skew" in the<em id="EN-US_TOPIC_0000001811634773__i787211914323"> Data Warehouse Service (DWS) Developer Guide</em>. If data skew is identified in a materialized view, perform data skew optimization at the storage layer by referring to "Optimizing Data Skew" in the<em id="EN-US_TOPIC_0000001811634773__i0417843103414"> Data Warehouse Service (DWS) Developer Guide</em>.</p>
</div></div>
</li></ul>
<ul id="EN-US_TOPIC_0000001811634773__ul79951644162013"><li id="EN-US_TOPIC_0000001811634773__li1071425122013"><strong id="EN-US_TOPIC_0000001811634773__b15288145952110">AS query</strong><p id="EN-US_TOPIC_0000001811634773__p85101503212">Creates a materialized view based on the query result.</p>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001811634773__section5233143195715"><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001811634773__p7336781238">Create a base table and insert data into the base table.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen61891822122319"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="n">x</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">generate_series</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="n">x</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p28982322235">Create a materialized view with the default option <strong id="EN-US_TOPIC_0000001811634773__b20750191920217">BUILD IMMEDIATE</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen69908315266"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p17241739182515">Create a materialized view in column-store.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen7224414192614"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv2</span><span class="w"> </span><span class="k">WITH</span><span class="p">(</span><span class="n">orientation</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">column</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p648018132247">Create a materialized view that is manually refreshed as required.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen14705134312715"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv3</span><span class="w"> </span><span class="n">BUILD</span><span class="w"> </span><span class="k">DEFERRED</span><span class="w"> </span><span class="n">REFRESH</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">DEMAND</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p13460655192614">Create a materialized view with a scheduled refresh time.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen561135122713"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv4</span><span class="w"> </span><span class="n">BUILD</span><span class="w"> </span><span class="k">DEFERRED</span><span class="w"> </span><span class="n">REFRESH</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="p">(</span><span class="n">trunc</span><span class="p">(</span><span class="n">sysdate</span><span class="p">))</span><span class="w"> </span><span class="k">EVERY</span><span class="w"> </span><span class="p">(</span><span class="nb">interval</span><span class="w"> </span><span class="s1">'1 day'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p13887747174712">Create a materialized view with a bitmap index.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen04831714204811"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv1</span>
<span class="k">with</span><span class="w"> </span><span class="p">(</span><span class="n">ORIENTATION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">COLUMN</span><span class="p">,</span><span class="w"> </span><span class="n">enable_hstore</span><span class="o">=</span><span class="k">true</span><span class="p">,</span><span class="w"> </span><span class="n">enable_hstore_opt</span><span class="o">=</span><span class="k">on</span><span class="p">,</span><span class="w"> </span><span class="n">bitmap_columns</span><span class="o">=</span><span class="s1">'col1'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">base_table</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p3379414507">Create a materialized view and specify the number of level-2 partitions in a column-store table.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen198459500506"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv</span>
<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">ORIENTATION</span><span class="o">=</span><span class="k">COLUMN</span><span class="p">,</span><span class="w"> </span><span class="n">ENABLE_HSTORE</span><span class="o">=</span><span class="k">ON</span><span class="p">,</span><span class="w"> </span><span class="n">enable_hstore_opt</span><span class="o">=</span><span class="k">on</span><span class="p">,</span><span class="w"> </span><span class="n">mv_pck_column</span><span class="o">=</span><span class="s1">'c3'</span><span class="p">,</span><span class="w"> </span><span class="n">secondary_part_column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'c2'</span><span class="p">,</span><span class="w"> </span><span class="n">secondary_part_num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">base_table</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p119214811510">Create a materialized view and specify the PCK column for sorting.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen1542145715519"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv</span>
<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">ORIENTATION</span><span class="o">=</span><span class="k">COLUMN</span><span class="p">,</span><span class="w"> </span><span class="n">ENABLE_HSTORE</span><span class="o">=</span><span class="k">ON</span><span class="p">,</span><span class="w"> </span><span class="n">enable_hstore_opt</span><span class="o">=</span><span class="k">on</span><span class="p">,</span><span class="w"> </span><span class="n">mv_pck_column</span><span class="o">=</span><span class="s1">'col3'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">base_table</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p17444627114219">Create a materialized view and specify the analysis method.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen16882183344216"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv1</span><span class="w"> </span><span class="n">enable</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="n">rewrite</span><span class="w"> </span><span class="k">with</span><span class="p">(</span><span class="n">excluded_inactive_tables</span><span class="o">=</span><span class="s1">'matview_basic.&quot;T1&quot;,matview_basic.&quot;a=b&quot;'</span><span class="p">,</span><span class="n">mv_analyze_mode</span><span class="o">=</span><span class="s1">'none'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">base_table</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p9524191511442">Create a V3 materialized view.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen19157112334414"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv1</span>
<span class="k">with</span><span class="w"> </span><span class="p">(</span><span class="n">orientation</span><span class="o">=</span><span class="k">column</span><span class="p">,</span><span class="w"> </span><span class="n">enable_hstore</span><span class="o">=</span><span class="k">true</span><span class="p">,</span><span class="w"> </span><span class="n">compression</span><span class="o">=</span><span class="n">low</span><span class="p">,</span><span class="w"> </span><span class="n">enable_hstore_opt</span><span class="o">=</span><span class="k">on</span><span class="p">,</span><span class="w"> </span><span class="n">COLVERSION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="n">TABLESPACE</span><span class="w"> </span><span class="n">cu_obs_tbs</span><span class="w"> </span><span class="n">distribute</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">scope_name</span><span class="p">)</span>
<span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">dicttbl_low</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p13637194914516">Create a materialized view that contains a foreign table for query rewriting.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen1235210106463"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv1</span><span class="w"> </span><span class="k">with</span><span class="w"> </span><span class="p">(</span><span class="n">enable_foreign_table_query_rewrite</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">base_table</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001811634773__p1767385302">Create a materialized view and specify that volatile functions can be used in the query statement.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001811634773__screen1314117133112"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">mv_date</span><span class="w"> </span><span class="k">with</span><span class="p">(</span><span class="n">mv_support_function_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'volatile'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="n">a</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t_date</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001811634773__section1268743195519"><h4 class="sectiontitle">Helpful Links</h4><p id="EN-US_TOPIC_0000001811634773__p9543133395517"><a href="dws_06_0358.html">ALTER MATERIALIZED VIEW</a>, <a href="dws_06_0360.html">DROP MATERIALIZED VIEW</a>, <a href="dws_06_0361.html">REFRESH MATERIALIZED VIEW</a></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0118.html">DDL Syntax</a></div>
</div>
</div>