LOAD 'pg_hint_plan';
+SET pg_hint_plan.enable TO on;
SET pg_hint_plan.debug_print TO on;
SET client_min_messages TO LOG;
---
--- IndexOnlyScan hint test
---
--- 1.ヒントつきクエリとの比較用
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
- QUERY PLAN
------------------------
- Seq Scan on ti1 t_1
- Filter: (c2 < 1000)
-(2 rows)
-
--- 2.テーブルを指定、1と比較
-/*+IndexOnlyScan(ti1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(ti1)"
+SET search_path TO public;
+----
+---- No. S-3-1 scan method hint
+----
+-- No. S-3-1-17
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
+ QUERY PLAN
+------------------------------
+ Index Scan using t1_i1 on t1
+ Index Cond: (c1 = 1)
+(2 rows)
+
+/*+IndexOnlyScan(t1)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
+INFO: hint syntax error at or near "IndexOnlyScan(t1)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+------------------------------
+ Index Scan using t1_i1 on t1
+ Index Cond: (c1 = 1)
+(2 rows)
+
+-- No. S-3-1-18
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on t1
+ Filter: (c1 >= 1)
+(2 rows)
+
+/*+IndexOnlyScan(t1)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(t1)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on t1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-1-19
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
+ QUERY PLAN
+------------------------------
+ Index Scan using t1_i1 on t1
+ Index Cond: (c1 = 1)
+(2 rows)
+
+/*+NoIndexOnlyScan(t1)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
+INFO: hint syntax error at or near "NoIndexOnlyScan(t1)"
+DETAIL: Unrecognized hint keyword "NoIndexOnlyScan".
+ QUERY PLAN
+------------------------------
+ Index Scan using t1_i1 on t1
+ Index Cond: (c1 = 1)
+(2 rows)
+
+-- No. S-3-1-20
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on t1
+ Filter: (c1 >= 1)
+(2 rows)
+
+/*+NoIndexOnlyScan(t1)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
+INFO: hint syntax error at or near "NoIndexOnlyScan(t1)"
+DETAIL: Unrecognized hint keyword "NoIndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on t1
+ Filter: (c1 >= 1)
+(2 rows)
+
+----
+---- No. S-3-3 index name specified
+----
+EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c2 >= 1)
+(2 rows)
+
+-- No. S-3-3-7
+/*+IndexOnlyScan(ti1 ti1_i3)*/
+EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_i3)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
+ QUERY PLAN
+---------------------
Seq Scan on ti1
- Filter: (c2 < 1000)
+ Filter: (c2 >= 1)
(2 rows)
--- 3.エイリアスを指定、1と比較
-/*+IndexOnlyScan(t_1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(t_1)"
+-- No. S-3-3-8
+/*+IndexOnlyScan(ti1 ti1_i3 ti1_i2)*/
+EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_i3 ti1_i2)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
- Seq Scan on ti1 t_1
- Filter: (c2 < 1000)
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c2 >= 1)
(2 rows)
--- 4.インデックスを指定、1と比較
-/*+IndexOnlyScan(ti1_i2)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(ti1_i2)"
+-- No. S-3-3-9
+/*+IndexOnlyScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)*/
+EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
+ QUERY PLAN
+---------------------
Seq Scan on ti1
- Filter: (c2 < 1000)
+ Filter: (c2 >= 1)
(2 rows)
--- 5.エイリアスとインデックスを指定・指定したインデックスを使用、2と比較
-/*+IndexOnlyScan(t_1 ti1_i2)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(t_1 ti1_i2)"
+----
+---- No. S-3-4 index type
+----
+-- No. S-3-4-23
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_btree)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_btree)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
- Seq Scan on ti1 t_1
- Filter: (c2 < 1000)
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
(2 rows)
--- 6.エイリアス1つとインデックス2つを指定、2つ目のインデックスを使用、5と比較
-/*+IndexOnlyScan(t_1 ti1_i2 ti1_i1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(t_1 ti1_i2 ti1_i1)"
+-- No. S-3-4-24
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_hash)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_hash)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
- Seq Scan on ti1 t_1
- Filter: (c2 < 1000)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
--- 7.Index ScanとIndex Only Scanの両方で使用しないようなインデックスを指定、
--- 5と比較
-/*+IndexOnlyScan(t_1 ti1_pred)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(t_1 ti1_pred)"
+-- No. S-3-4-25
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 < 1)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_gist)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_gist)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
- Seq Scan on ti1 t_1
- Filter: (c2 < 1000)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 < 1)
+(2 rows)
+
+-- No. S-3-4-26
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
--- 8.存在しないインデックスを指定
-/*+IndexOnlyScan(t_1 ti1_i)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
-INFO: hint syntax error at or near "IndexOnlyScan(t_1 ti1_i)"
+/*+IndexOnlyScan(ti1 ti1_gin)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_gin)"
DETAIL: Unrecognized hint keyword "IndexOnlyScan".
- QUERY PLAN
------------------------
- Seq Scan on ti1 t_1
- Filter: (c2 < 1000)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
---
--- IndexScan hint test
---
--- 1.IndexScanヒントが今までどおり使えることの確認
-/*+IndexScan(t_1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 1000;
-LOG: pg_hint_plan:
-used hint:
-IndexScan(t_1)
-not used hint:
-duplication hint:
-error hint:
+-- No. S-3-4-27
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 < 100)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_expr)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_expr)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 < 100)
+(2 rows)
+-- No. S-3-4-28
+EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
QUERY PLAN
------------------------------------
- Index Scan using ti1_i1 on ti1 t_1
- Index Cond: (c2 < 1000)
+ Seq Scan on ti1
+ Filter: (lower(c4) >= '1'::text)
(2 rows)
---
--- NoIndexOnlyScan hint test
---
--- 1.ヒントつきクエリとの比較用
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 10;
+/*+IndexOnlyScan(ti1 ti1_pred)*/
+EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_pred)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
QUERY PLAN
------------------------------------
- Index Scan using ti1_i1 on ti1 t_1
- Index Cond: (c2 < 10)
+ Seq Scan on ti1
+ Filter: (lower(c4) >= '1'::text)
+(2 rows)
+
+-- No. S-3-4-29
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
(2 rows)
--- 2.テーブルを指定、1と比較
+/*+IndexOnlyScan(ti1 ti1_uniq)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_uniq)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-4-30
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_multi)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_multi)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-4-31
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE to_tsvector('english', c4) @@ 'a & b';
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Bitmap Heap Scan on ti1
+ Recheck Cond: (to_tsvector('english'::regconfig, c4) @@ '''a'' & ''b'''::tsquery)
+ -> Bitmap Index Scan on ti1_ts
+ Index Cond: (to_tsvector('english'::regconfig, c4) @@ '''a'' & ''b'''::tsquery)
+(4 rows)
+
+/*+IndexOnlyScan(ti1 ti1_ts)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE to_tsvector('english', c4) @@ 'a & b';
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_ts)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Bitmap Heap Scan on ti1
+ Recheck Cond: (to_tsvector('english'::regconfig, c4) @@ '''a'' & ''b'''::tsquery)
+ -> Bitmap Index Scan on ti1_ts
+ Index Cond: (to_tsvector('english'::regconfig, c4) @@ '''a'' & ''b'''::tsquery)
+(4 rows)
+
+-- No. S-3-4-32
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_pkey)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_pkey)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-4-33
+EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 >= 1;
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c2 >= 1)
+(2 rows)
+
+/*+IndexOnlyScan(ti1 ti1_c2_key)*/
+EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_c2_key)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c2 >= 1)
+(2 rows)
+
+----
+---- No. S-3-5 not used index
+----
+-- No. S-3-5-3
+/*+IndexOnlyScan(ti1 ti1_pred)*/
+EXPLAIN (COSTS true) SELECT c1 FROM s1.ti1 WHERE c1 = 100;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_pred)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+--------------------------------------------------------------------
+ Index Scan using ti1_uniq on ti1 (cost=0.00..8.27 rows=1 width=4)
+ Index Cond: (c1 = 100)
+(2 rows)
+
+----
+---- No. S-3-6 not exist index
+----
+-- No. S-3-6-3
+/*+IndexOnlyScan(ti1 not_exist)*/
+EXPLAIN (COSTS true) SELECT c1 FROM s1.ti1 WHERE c1 = 100;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 not_exist)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+--------------------------------------------------------------------
+ Index Scan using ti1_uniq on ti1 (cost=0.00..8.27 rows=1 width=4)
+ Index Cond: (c1 = 100)
+(2 rows)
+
+----
+---- No. S-3-13 message output
+----
+-- No. S-3-13-25
+/*+IndexOnlyScan(ti1)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-13-26
+/*+IndexOnlyScan(ti1 ti1_pkey)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_pkey)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-13-27
+/*+IndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+INFO: hint syntax error at or near "IndexOnlyScan(ti1 ti1_pkey ti1_btree)"
+DETAIL: Unrecognized hint keyword "IndexOnlyScan".
+ QUERY PLAN
+---------------------
+ Seq Scan on ti1
+ Filter: (c1 >= 1)
+(2 rows)
+
+-- No. S-3-13-28
/*+NoIndexOnlyScan(ti1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 < 10;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
INFO: hint syntax error at or near "NoIndexOnlyScan(ti1)"
DETAIL: Unrecognized hint keyword "NoIndexOnlyScan".
- QUERY PLAN
---------------------------------
- Index Scan using ti1_i1 on ti1
- Index Cond: (c2 < 10)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
--- 3.エイリアスを指定、1と比較
-/*+NoIndexOnlyScan(t_1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 10;
-INFO: hint syntax error at or near "NoIndexOnlyScan(t_1)"
+-- No. S-3-13-29
+/*+NoIndexOnlyScan(ti1 ti1_pkey)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+INFO: hint syntax error at or near "NoIndexOnlyScan(ti1 ti1_pkey)"
DETAIL: Unrecognized hint keyword "NoIndexOnlyScan".
- QUERY PLAN
-------------------------------------
- Index Scan using ti1_i1 on ti1 t_1
- Index Cond: (c2 < 10)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
--- 4.インデックスを指定、1と比較
-/*+NoIndexOnlyScan(ti1_i2)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 < 10;
-INFO: hint syntax error at or near "NoIndexOnlyScan(ti1_i2)"
+-- No. S-3-13-30
+/*+NoIndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+INFO: hint syntax error at or near "NoIndexOnlyScan(ti1 ti1_pkey ti1_btree)"
DETAIL: Unrecognized hint keyword "NoIndexOnlyScan".
- QUERY PLAN
---------------------------------
- Index Scan using ti1_i1 on ti1
- Index Cond: (c2 < 10)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
--- 5.エイリアスとインデックスを指定、2と比較
-/*+NoIndexOnlyScan(t_1 ti1_i1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 10;
-INFO: hint syntax error at or near "NoIndexOnlyScan(t_1 ti1_i1)"
-DETAIL: Unrecognized hint keyword "NoIndexOnlyScan".
- QUERY PLAN
-------------------------------------
- Index Scan using ti1_i1 on ti1 t_1
- Index Cond: (c2 < 10)
-(2 rows)
-
---
--- NoIndexScan hint test
---
--- 1.Index ScanだけでなIndex Only Scanも選択されないことの確認
-/*+NoIndexScan(t_1)*/
-EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 t_1 WHERE c2 < 10;
-LOG: pg_hint_plan:
-used hint:
-NoIndexScan(t_1)
-not used hint:
-duplication hint:
-error hint:
-
- QUERY PLAN
------------------------------------
- Bitmap Heap Scan on ti1 t_1
- Recheck Cond: (c2 < 10)
- -> Bitmap Index Scan on ti1_i2
- Index Cond: (c2 < 10)
-(4 rows)
-
(2 rows)
-- No. S-3-4-24
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
- QUERY PLAN
----------------------
- Seq Scan on ti1
- Filter: (c1 >= 1)
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
/*+IndexOnlyScan(ti1 ti1_hash)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_hash)
duplication hint:
error hint:
- QUERY PLAN
----------------------
-
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_hash on ti1
+ Index Cond: (c1 = 1)
+(2 rows)
-- No. S-3-4-25
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
- QUERY PLAN
----------------------
- Seq Scan on ti1
- Filter: (c1 >= 1)
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 < 1)
(2 rows)
/*+IndexOnlyScan(ti1 ti1_gist)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_gist)
QUERY PLAN
----------------------------------
-
+ Index Scan using ti1_gist on ti1
+ Index Cond: (c1 < 1)
+(2 rows)
-- No. S-3-4-26
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
- QUERY PLAN
----------------------
- Seq Scan on ti1
- Filter: (c1 >= 1)
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
(2 rows)
/*+IndexOnlyScan(ti1 ti1_gin)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_gin)
duplication hint:
error hint:
- QUERY PLAN
----------------------
-
+ QUERY PLAN
+--------------------
+ Seq Scan on ti1
+ Filter: (c1 = 1)
+(2 rows)
-- No. S-3-4-27
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
- QUERY PLAN
----------------------
- Seq Scan on ti1
- Filter: (c1 >= 1)
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 < 100)
(2 rows)
/*+IndexOnlyScan(ti1 ti1_expr)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_expr)
duplication hint:
error hint:
- QUERY PLAN
----------------------
-
+ QUERY PLAN
+-----------------------------------
+ Index Scan using ti1_expr on ti1
+ Index Cond: ((c1 < 100) = true)
+ Filter: (c1 < 100)
+(3 rows)
-- No. S-3-4-28
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE lower(c4) >= '1';
+EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
QUERY PLAN
------------------------------------
Seq Scan on ti1
(2 rows)
/*+IndexOnlyScan(ti1 ti1_pred)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE lower(c4) >= '1';
+EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_pred)
QUERY PLAN
----------------------------------------
-
+ Index Scan using ti1_pred on ti1
+ Index Cond: (lower(c4) >= '1'::text)
+(2 rows)
-- No. S-3-4-29
EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
QUERY PLAN
-------------------------------------------------------------------------------
-
+ Seq Scan on ti1
+ Filter: (to_tsvector('english'::regconfig, c4) @@ '''a'' & ''b'''::tsquery)
+(2 rows)
-- No. S-3-4-32
EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
----
-- No. S-3-13-25
/*+IndexOnlyScan(ti1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1)
duplication hint:
error hint:
- QUERY PLAN
-----------------------------------
-
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 >= 1)
+(2 rows)
-- No. S-3-13-26
/*+IndexOnlyScan(ti1 ti1_pkey)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_pkey)
duplication hint:
error hint:
- QUERY PLAN
-----------------------------------
-
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_pkey on ti1
+ Index Cond: (c1 >= 1)
+(2 rows)
-- No. S-3-13-27
/*+IndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
LOG: pg_hint_plan:
used hint:
IndexOnlyScan(ti1 ti1_pkey ti1_btree)
duplication hint:
error hint:
- QUERY PLAN
------------------------------------
-
+ QUERY PLAN
+----------------------------------------
+ Index Only Scan using ti1_btree on ti1
+ Index Cond: (c1 >= 1)
+(2 rows)
-- No. S-3-13-28
/*+NoIndexOnlyScan(ti1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
LOG: pg_hint_plan:
used hint:
NoIndexOnlyScan(ti1)
duplication hint:
error hint:
- QUERY PLAN
------------------------------------
- Tid Scan on ti1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (c1 = 1)
-(3 rows)
+ QUERY PLAN
+----------------------------------
+ Index Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
+(2 rows)
-- No. S-3-13-29
/*+NoIndexOnlyScan(ti1 ti1_pkey)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
INFO: hint syntax error at or near "ti1_pkey)"
DETAIL: Closing parenthesis is necessary.
- QUERY PLAN
------------------------------------
- Tid Scan on ti1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (c1 = 1)
-(3 rows)
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
+(2 rows)
-- No. S-3-13-30
/*+NoIndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
INFO: hint syntax error at or near "ti1_pkey ti1_btree)"
DETAIL: Closing parenthesis is necessary.
- QUERY PLAN
------------------------------------
- Tid Scan on ti1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (c1 = 1)
-(3 rows)
+ QUERY PLAN
+---------------------------------------
+ Index Only Scan using ti1_uniq on ti1
+ Index Cond: (c1 = 1)
+(2 rows)
EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
-- No. S-3-4-24
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
/*+IndexOnlyScan(ti1 ti1_hash)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
-- No. S-3-4-25
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
/*+IndexOnlyScan(ti1 ti1_gist)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
-- No. S-3-4-26
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
/*+IndexOnlyScan(ti1 ti1_gin)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
-- No. S-3-4-27
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
/*+IndexOnlyScan(ti1 ti1_expr)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
-- No. S-3-4-28
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE lower(c4) >= '1';
+EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
/*+IndexOnlyScan(ti1 ti1_pred)*/
-EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE lower(c4) >= '1';
+EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
-- No. S-3-4-29
EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
-- No. S-3-13-25
/*+IndexOnlyScan(ti1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
-- No. S-3-13-26
/*+IndexOnlyScan(ti1 ti1_pkey)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
-- No. S-3-13-27
/*+IndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
-- No. S-3-13-28
/*+NoIndexOnlyScan(ti1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
-- No. S-3-13-29
/*+NoIndexOnlyScan(ti1 ti1_pkey)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
-- No. S-3-13-30
/*+NoIndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
+EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;