{"kind": "plan", "major": "18", "item": {"slug": "bitmap-index-scan", "name": "Bitmap Index Scan", "name_zh": "BitmapIndexScan", "category": "\u4f4d\u56fe", "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "aliases": ["Bitmap Index Scan", "BitmapIndexScan", "T_BitmapIndexScan"], "content_hash": "2a13bc7a1197fb3ac5006b00a31299d1b4085d3503be531560d11659fddb37b2", "versions": {"10": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "0a18120b59b87f6139bb2c67de548494d5d0ad6ab03533e53ff267db30196068", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "66152ac93c470e2705adfef9a4c10ad3aa1beccb7baccf0b16dd96f3d59a0ec0", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=10", "label": "EXPLAIN"}, {"url": "/docs/10/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/10/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=10", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=10", "label": "work_mem"}, {"url": "/wiki/indexam/?v=10", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 10.23 source archive", "label": "10.23", "major": "10", "channel": "historical", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "source_url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "line": 950, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:950", "sha256": "a785298532047cfeda969e78c3597a343dc1c56d61ba85830b0f16a02a14b5a1", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "line": 227, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:227", "sha256": "cea76648bb38ae55f18f989768bee1a4ee025691ceea0f86bccb29dcdc166acc", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "0a18120b59b87f6139bb2c67de548494d5d0ad6ab03533e53ff267db30196068", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "d562c321108844798cd234303fffb618f13d4ee3f3a5ac79bfd963b077e47c22", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "66152ac93c470e2705adfef9a4c10ad3aa1beccb7baccf0b16dd96f3d59a0ec0", "archive_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/10/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "10", "build_id": 63, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "04aacb3e491b4aeabbfc54a60ddedcc5fafcc469c0823a375c35a83ec42575c6", "fragment_sha256": "f96581ffeb3075e6db6610b3c1f330fa100da51182db73f3d9de156e82b9d7b3", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:62997ea80516ad012fbf6359de33f3b016b54c47e2df76e75606116b4baaf8e5", "translated_from_revision": null}, "body_sha256": "eb05c01d63420f042caab8af3e2ff583f634f52809169367404cbba0e4aa1a4f", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 10.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 10.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "10", "text_hash": "e6bf59bfcb4b2e2e350625443ca4d06b9436d95ec03e078da26767eb9e76ba5b", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/10/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "10", "build_id": 63, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "04aacb3e491b4aeabbfc54a60ddedcc5fafcc469c0823a375c35a83ec42575c6", "fragment_sha256": "f96581ffeb3075e6db6610b3c1f330fa100da51182db73f3d9de156e82b9d7b3", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:62997ea80516ad012fbf6359de33f3b016b54c47e2df76e75606116b4baaf8e5", "translated_from_revision": null}, "body_sha256": "eb05c01d63420f042caab8af3e2ff583f634f52809169367404cbba0e4aa1a4f", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 10.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 10.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/10/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/10/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/10/performance-tips.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "10", "link_map": {"/zh/docs/10/performance-tips.html#USING-EXPLAIN-BASICS": "/docs/10/performance-tips.html#USING-EXPLAIN-BASICS", "/zh/docs/10/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/10/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/10/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/10/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/10/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/10/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/10/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "e517490efe075c8b515a17dd76b46ff569d1269b8cda739a79a01a7f6f6d976f", "content_hash": "e6bf59bfcb4b2e2e350625443ca4d06b9436d95ec03e078da26767eb9e76ba5b", "source_database": "center", "source_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 10.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/10/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 10.23 \u00b7 using-explain", "sha256": "a4b4304aedb0a2da0145cc7c35b03b319a5c7ee3df35a8ef84ab6d3a610f98f3"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 10.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/10/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/10/facts/0/label": "Core node tag", "/versions/10/facts/1/label": "Structured EXPLAIN Node Type", "/versions/10/facts/2/label": "Inputs", "/versions/10/facts/2/value": "An index", "/versions/10/facts/3/label": "Output", "/versions/10/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/10/facts/4/label": "Executor initializer", "/versions/10/facts/5/label": "Memory mechanism", "/versions/10/tables/0/title": "EXPLAIN labels in this source build", "/versions/10/related/1/label": "Using EXPLAIN", "/versions/10/related/2/label": "Parallel plans", "/versions/10/related/5/label": "Index AM", "/versions/10/sections/0/title": "EXPLAIN names and attributes", "/versions/10/sections/1/title": "Memory and temporary storage", "/versions/10/sections/2/title": "Parallel execution and instrumentation", "/versions/10/sections/3/title": "Examples from this manual build", "/versions/10/sections/4/title": "Executor implementation notes", "/versions/10/sections/5/title": "EXPLAIN identity in core source", "/versions/10/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/10/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/10/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/10/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/10/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/10/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/10/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/10/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/10/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/10/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/10/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/10/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/10/tables/0/columns/0/label": "Text-format label", "/versions/10/tables/0/columns/1/label": "Structured node identity", "/versions/10/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 10.23 manual; it was not executed for this collection.", "/versions/10/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/10/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 10.23 manual; it was not executed for this collection.", "/versions/10/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "cf7ea12132345006e44c92c99addf03bc0847a2b6117baf52b8c465466f86107", "canonical_center_text_hash": "e6bf59bfcb4b2e2e350625443ca4d06b9436d95ec03e078da26767eb9e76ba5b"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/10/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/10/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/10/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "11": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "181aa05754bb5e78dc6e3dca3e202c115ae152e237511ac01e048514a8036ded", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "a47e915ced1ae75d21b8d7b7b67ae09c4bf230069208aa5d9f5b6c2ca6ae85d1", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=11", "label": "EXPLAIN"}, {"url": "/docs/11/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/11/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=11", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=11", "label": "work_mem"}, {"url": "/wiki/indexam/?v=11", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 11.22 source archive", "label": "11.22", "major": "11", "channel": "historical", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "source_url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "line": 1075, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1075", "sha256": "9df8400c1a4377179572ceb916d6020fca4e2760f74bf416d77ed97476523bbd", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "line": 227, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:227", "sha256": "95ef4d4a5df4c29f14af9763fae2c530449bdacdf3853d9ff297adf1fed6153b", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "181aa05754bb5e78dc6e3dca3e202c115ae152e237511ac01e048514a8036ded", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "5e0511194183800e8d6eb293fd4b40639c7d3118e2d199c8e7865ba4fa4cf67f", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "a47e915ced1ae75d21b8d7b7b67ae09c4bf230069208aa5d9f5b6c2ca6ae85d1", "archive_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/11/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "11", "build_id": 64, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "617a30102327f61276ba77fb034f4bf1bbb677d91d4eb5507dc14d740e6394c9", "fragment_sha256": "9bdcae88c3196b792b2d9033df1285d831dd3b250190e65a0e1b0817c10e594d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:ef5c7bc074acae9795db16e6b7482aea3b222bd4bcce0f76831332b97a21e8a1", "translated_from_revision": null}, "body_sha256": "50de9899f4d5d46ce18150d342e75b42f35f92295263af1a1cc2d46d7b425cd3", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 11.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 11.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "11", "text_hash": "aa1c9fed0821edc0be0a6bd1d9f1cd473618973f0d3e9450ffaf9e0be1319048", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/11/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "11", "build_id": 64, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "617a30102327f61276ba77fb034f4bf1bbb677d91d4eb5507dc14d740e6394c9", "fragment_sha256": "9bdcae88c3196b792b2d9033df1285d831dd3b250190e65a0e1b0817c10e594d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:ef5c7bc074acae9795db16e6b7482aea3b222bd4bcce0f76831332b97a21e8a1", "translated_from_revision": null}, "body_sha256": "50de9899f4d5d46ce18150d342e75b42f35f92295263af1a1cc2d46d7b425cd3", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 11.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 11.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/11/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/11/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/11/performance-tips.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "11", "link_map": {"/zh/docs/11/performance-tips.html#USING-EXPLAIN-BASICS": "/docs/11/performance-tips.html#USING-EXPLAIN-BASICS", "/zh/docs/11/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/11/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/11/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/11/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/11/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/11/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/11/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "8fd6e55ea9adcc6192e7b61747f6146f9288d6a47fc87d8ee372961d79493697", "content_hash": "aa1c9fed0821edc0be0a6bd1d9f1cd473618973f0d3e9450ffaf9e0be1319048", "source_database": "center", "source_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 11.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/11/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 11.22 \u00b7 using-explain", "sha256": "8411bc78085d4737e32d7cca103d859da6c6539e33ec5e2fba46e74c6f199d8a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 11.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/11/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/11/facts/0/label": "Core node tag", "/versions/11/facts/1/label": "Structured EXPLAIN Node Type", "/versions/11/facts/2/label": "Inputs", "/versions/11/facts/2/value": "An index", "/versions/11/facts/3/label": "Output", "/versions/11/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/11/facts/4/label": "Executor initializer", "/versions/11/facts/5/label": "Memory mechanism", "/versions/11/tables/0/title": "EXPLAIN labels in this source build", "/versions/11/related/1/label": "Using EXPLAIN", "/versions/11/related/2/label": "Parallel plans", "/versions/11/related/5/label": "Index AM", "/versions/11/sections/0/title": "EXPLAIN names and attributes", "/versions/11/sections/1/title": "Memory and temporary storage", "/versions/11/sections/2/title": "Parallel execution and instrumentation", "/versions/11/sections/3/title": "Examples from this manual build", "/versions/11/sections/4/title": "Executor implementation notes", "/versions/11/sections/5/title": "EXPLAIN identity in core source", "/versions/11/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/11/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/11/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/11/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/11/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/11/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/11/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/11/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/11/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/11/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/11/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/11/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/11/tables/0/columns/0/label": "Text-format label", "/versions/11/tables/0/columns/1/label": "Structured node identity", "/versions/11/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 11.22 manual; it was not executed for this collection.", "/versions/11/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/11/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 11.22 manual; it was not executed for this collection.", "/versions/11/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "9d907117f5e4e14d35b68595a3e9386da60951193be52cbb9b4c61ebd4ad447f", "canonical_center_text_hash": "aa1c9fed0821edc0be0a6bd1d9f1cd473618973f0d3e9450ffaf9e0be1319048"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/11/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/11/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/11/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "12": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "7fe85640bde0b6f74d609c1d443f5622ea6d7dc2d77e2a92cd6fdf51a572ae64", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "8a18d2e770adab40a9172ebc6895501ec22f650b479c4e9ce44ca010c57ad24d", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=12", "label": "EXPLAIN"}, {"url": "/docs/12/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/12/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=12", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=12", "label": "work_mem"}, {"url": "/wiki/indexam/?v=12", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 12.22 source archive", "label": "12.22", "major": "12", "channel": "historical", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "source_url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "line": 1146, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1146", "sha256": "d02ea84fdaa201de5d9360645a9f24bfbd2c31f7d45a639e09560ac0e6b6471d", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "line": 227, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:227", "sha256": "311b17379fe54e3f342fe5ad41c43afbdfa1b844978db2bb2eb22b82520d3256", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "7fe85640bde0b6f74d609c1d443f5622ea6d7dc2d77e2a92cd6fdf51a572ae64", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "b0c4a0aeb48660ce06e5e700d5529ca9066fd16682bd15783d6e71b5420b07b0", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "8a18d2e770adab40a9172ebc6895501ec22f650b479c4e9ce44ca010c57ad24d", "archive_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/12/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "12", "build_id": 65, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "773efea8d76bcea57eb449ceb506a51025a4125ceaa9b765a1039e558f5cfe98", "fragment_sha256": "11f888bed11b6424b2bd408d0ab1d02efe3979a6fb91529f5a7634a421e6e52d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:86d2ff781f93e1de17122ebc514d5e64fcb63fed15941f496d7e146c6dcc7a49", "translated_from_revision": null}, "body_sha256": "db9837f8a92112a494ffafa6beb21ed503b58547b2721ac18d56c820d600a3ef", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 12.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 12.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "12", "text_hash": "d51a25a9e2f568113850ac82e512e9cbf1efef295053e24ef1cd67f39a10ed21", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/12/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "12", "build_id": 65, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "773efea8d76bcea57eb449ceb506a51025a4125ceaa9b765a1039e558f5cfe98", "fragment_sha256": "11f888bed11b6424b2bd408d0ab1d02efe3979a6fb91529f5a7634a421e6e52d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:86d2ff781f93e1de17122ebc514d5e64fcb63fed15941f496d7e146c6dcc7a49", "translated_from_revision": null}, "body_sha256": "db9837f8a92112a494ffafa6beb21ed503b58547b2721ac18d56c820d600a3ef", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 12.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 12.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/12/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/12/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/12/performance-tips.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "12", "link_map": {"/zh/docs/12/performance-tips.html#USING-EXPLAIN-BASICS": "/docs/12/performance-tips.html#USING-EXPLAIN-BASICS", "/zh/docs/12/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/12/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/12/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/12/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/12/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/12/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/12/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "cd50d4abfd78c7ae761dc4f1a0eee878d976950610ab34f2aa157e8f37c7880f", "content_hash": "d51a25a9e2f568113850ac82e512e9cbf1efef295053e24ef1cd67f39a10ed21", "source_database": "center", "source_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 12.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/12/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 12.22 \u00b7 using-explain", "sha256": "06297525f2180b07e752837a3351be9c871b56559f535bcd0a67dec9baac10c0"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 12.22 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/12/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/12/facts/0/label": "Core node tag", "/versions/12/facts/1/label": "Structured EXPLAIN Node Type", "/versions/12/facts/2/label": "Inputs", "/versions/12/facts/2/value": "An index", "/versions/12/facts/3/label": "Output", "/versions/12/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/12/facts/4/label": "Executor initializer", "/versions/12/facts/5/label": "Memory mechanism", "/versions/12/tables/0/title": "EXPLAIN labels in this source build", "/versions/12/related/1/label": "Using EXPLAIN", "/versions/12/related/2/label": "Parallel plans", "/versions/12/related/5/label": "Index AM", "/versions/12/sections/0/title": "EXPLAIN names and attributes", "/versions/12/sections/1/title": "Memory and temporary storage", "/versions/12/sections/2/title": "Parallel execution and instrumentation", "/versions/12/sections/3/title": "Examples from this manual build", "/versions/12/sections/4/title": "Executor implementation notes", "/versions/12/sections/5/title": "EXPLAIN identity in core source", "/versions/12/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/12/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/12/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/12/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/12/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/12/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/12/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/12/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/12/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/12/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/12/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/12/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/12/tables/0/columns/0/label": "Text-format label", "/versions/12/tables/0/columns/1/label": "Structured node identity", "/versions/12/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 12.22 manual; it was not executed for this collection.", "/versions/12/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/12/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 12.22 manual; it was not executed for this collection.", "/versions/12/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "62d641420f04c137ae44d41b7c276f1fc0df749826ffd0370a6a7f33a0733381", "canonical_center_text_hash": "d51a25a9e2f568113850ac82e512e9cbf1efef295053e24ef1cd67f39a10ed21"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/12/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/12/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/12/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "13": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "bed645648d6c8ab8ba338b23d5b6bf1bd22bed1a3f7d72db0397d526339c4073", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "a0823f106dd0af7415c44a788a8b258dc13afc6dab320d0dec0a2d17f418fdb8", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=13", "label": "EXPLAIN"}, {"url": "/docs/13/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/13/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=13", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=13", "label": "work_mem"}, {"url": "/wiki/indexam/?v=13", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 13.23 source archive", "label": "13.23", "major": "13", "channel": "historical", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "source_url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "line": 1204, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1204", "sha256": "541713e0e7f1c9cc352c2b6028964d440c19d2678a4463000094c24a88c1e730", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "line": 227, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:227", "sha256": "d085ee99acfa00587e6ade3a1d9f8108a0566beedbbee3f54a50c9fc0cc2e875", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "bed645648d6c8ab8ba338b23d5b6bf1bd22bed1a3f7d72db0397d526339c4073", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "dcb296833777b02008c4b6bae8e8f7c6423b7ffba21f36702597c9d596d039ab", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "a0823f106dd0af7415c44a788a8b258dc13afc6dab320d0dec0a2d17f418fdb8", "archive_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/13/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "13", "build_id": 66, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "d7400476f3cf658423dd2d2f64b6b6b0e53d8fdc8692b9e93a05587095d469e1", "fragment_sha256": "ff01eac4b8573365291b7ab77287c3dc790eba96d5a36dbc32ebe09bea1ba367", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:a13a825c39f0268ef1cfe9137e283e38d0da73b2d7894f0733c7b26372a4f6a4", "translated_from_revision": null}, "body_sha256": "ded86b755027ee87a9ff350e3aae748dbeefdd211e184daf95c7c6918efcc164", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 13.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 13.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "13", "text_hash": "5628c2c65854b59facdb7f1c71a1228bfd1351d30d6274e25d0fb83a723d6a18", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/13/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "13", "build_id": 66, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "d7400476f3cf658423dd2d2f64b6b6b0e53d8fdc8692b9e93a05587095d469e1", "fragment_sha256": "ff01eac4b8573365291b7ab77287c3dc790eba96d5a36dbc32ebe09bea1ba367", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:a13a825c39f0268ef1cfe9137e283e38d0da73b2d7894f0733c7b26372a4f6a4", "translated_from_revision": null}, "body_sha256": "ded86b755027ee87a9ff350e3aae748dbeefdd211e184daf95c7c6918efcc164", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 13.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 13.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/13/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/13/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/13/performance-tips.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "13", "link_map": {"/zh/docs/13/performance-tips.html#USING-EXPLAIN-BASICS": "/docs/13/performance-tips.html#USING-EXPLAIN-BASICS", "/zh/docs/13/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/13/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/13/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/13/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/13/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/13/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/13/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "74c4bb8bada7a94279d3a2b620086152b2a14881acc901b66afaa01f7c979bf7", "content_hash": "5628c2c65854b59facdb7f1c71a1228bfd1351d30d6274e25d0fb83a723d6a18", "source_database": "center", "source_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 13.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/13/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 13.23 \u00b7 using-explain", "sha256": "650fd8629382d5dc8f9f8412c50ec5f32442a9ad2f98ca88e5348a7c2bd0ac7a"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 13.23 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/13/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/13/facts/0/label": "Core node tag", "/versions/13/facts/1/label": "Structured EXPLAIN Node Type", "/versions/13/facts/2/label": "Inputs", "/versions/13/facts/2/value": "An index", "/versions/13/facts/3/label": "Output", "/versions/13/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/13/facts/4/label": "Executor initializer", "/versions/13/facts/5/label": "Memory mechanism", "/versions/13/tables/0/title": "EXPLAIN labels in this source build", "/versions/13/related/1/label": "Using EXPLAIN", "/versions/13/related/2/label": "Parallel plans", "/versions/13/related/5/label": "Index AM", "/versions/13/sections/0/title": "EXPLAIN names and attributes", "/versions/13/sections/1/title": "Memory and temporary storage", "/versions/13/sections/2/title": "Parallel execution and instrumentation", "/versions/13/sections/3/title": "Examples from this manual build", "/versions/13/sections/4/title": "Executor implementation notes", "/versions/13/sections/5/title": "EXPLAIN identity in core source", "/versions/13/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/13/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/13/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/13/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/13/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/13/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/13/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/13/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/13/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/13/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/13/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/13/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/13/tables/0/columns/0/label": "Text-format label", "/versions/13/tables/0/columns/1/label": "Structured node identity", "/versions/13/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 13.23 manual; it was not executed for this collection.", "/versions/13/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/13/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 13.23 manual; it was not executed for this collection.", "/versions/13/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "4aea4090751e7a77e79730f1522396b4e42ccae27c3189322112dce1b4b18495", "canonical_center_text_hash": "5628c2c65854b59facdb7f1c71a1228bfd1351d30d6274e25d0fb83a723d6a18"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/13/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/13/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/13/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "14": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "ed88a656eb113183830b115dc514d98401e2163a56ae54c911c381f8d0ad012c", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "6b86639c01e2be18b9e08a99d5aa46e09747cade936cc703d9d30bfe8d61fa1c", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=14", "label": "EXPLAIN"}, {"url": "/docs/14/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/14/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=14", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=14", "label": "work_mem"}, {"url": "/wiki/indexam/?v=14", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 14.24 source archive", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "source_url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "line": 1240, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1240", "sha256": "e091be4e2a083b8dea39ccd09beedede22c1716ef974da66c214a44f48be8c41", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "72da1c5ad457f1d92a39ab73531701794df858419e3b89d6e6cb7079634e68fa", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "ed88a656eb113183830b115dc514d98401e2163a56ae54c911c381f8d0ad012c", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "302f51a16b570dba7ec4e7bc045f7df5800d21630280354d1a24025f3baec75d", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "6b86639c01e2be18b9e08a99d5aa46e09747cade936cc703d9d30bfe8d61fa1c", "archive_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/14/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "14", "build_id": 99, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "62cadce9a200c7891b3bbf04fc22c8dc17b4525aec0d020a074310592666f6d4", "fragment_sha256": "21f1290aea0d33f155a1fa2532d3369bd70b9d600035922ba6862bfea0730306", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:87e6aa4fd6e1ec85c5f4a6de4f5647cfd9e5de734ca2c266d32b6d6192c662ef", "translated_from_revision": null}, "body_sha256": "aef980cf418da8f6909d1092ea48faa2874bc67a8442ee9f02f25977c4de824b", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 14.24 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 14.24 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "14", "text_hash": "14f4b42f183583f06c9a4e473fc82e67b8679d0ac162135fb631cc98562a522d", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/14/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "14", "build_id": 99, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "62cadce9a200c7891b3bbf04fc22c8dc17b4525aec0d020a074310592666f6d4", "fragment_sha256": "21f1290aea0d33f155a1fa2532d3369bd70b9d600035922ba6862bfea0730306", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:87e6aa4fd6e1ec85c5f4a6de4f5647cfd9e5de734ca2c266d32b6d6192c662ef", "translated_from_revision": null}, "body_sha256": "aef980cf418da8f6909d1092ea48faa2874bc67a8442ee9f02f25977c4de824b", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 14.24 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 14.24 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/14/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/14/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/14/performance-tips.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "14", "link_map": {"/zh/docs/14/performance-tips.html#USING-EXPLAIN-BASICS": "/docs/14/performance-tips.html#USING-EXPLAIN-BASICS", "/zh/docs/14/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/14/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/14/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/14/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/14/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/14/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/14/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "a07b13dfb3272f14d07bece2b21057ccc965aa860920d07764bb432f4b8081d0", "content_hash": "14f4b42f183583f06c9a4e473fc82e67b8679d0ac162135fb631cc98562a522d", "source_database": "center", "source_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 14.24 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/14/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 14.24 \u00b7 using-explain", "sha256": "7f5ab59cb21a035ada45ea3426c5d1cca3f781273483677f73fdd76753555206"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 14.24 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/14/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/14/facts/0/label": "Core node tag", "/versions/14/facts/1/label": "Structured EXPLAIN Node Type", "/versions/14/facts/2/label": "Inputs", "/versions/14/facts/2/value": "An index", "/versions/14/facts/3/label": "Output", "/versions/14/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/14/facts/4/label": "Executor initializer", "/versions/14/facts/5/label": "Memory mechanism", "/versions/14/tables/0/title": "EXPLAIN labels in this source build", "/versions/14/related/1/label": "Using EXPLAIN", "/versions/14/related/2/label": "Parallel plans", "/versions/14/related/5/label": "Index AM", "/versions/14/sections/0/title": "EXPLAIN names and attributes", "/versions/14/sections/1/title": "Memory and temporary storage", "/versions/14/sections/2/title": "Parallel execution and instrumentation", "/versions/14/sections/3/title": "Examples from this manual build", "/versions/14/sections/4/title": "Executor implementation notes", "/versions/14/sections/5/title": "EXPLAIN identity in core source", "/versions/14/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/14/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/14/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/14/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/14/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/14/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/14/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/14/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/14/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/14/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/14/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/14/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/14/tables/0/columns/0/label": "Text-format label", "/versions/14/tables/0/columns/1/label": "Structured node identity", "/versions/14/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 14.24 manual; it was not executed for this collection.", "/versions/14/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/14/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 14.24 manual; it was not executed for this collection.", "/versions/14/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "6efb503db5424f075c651c5defaef07ca62c5b8327fdd05ee66220a4595a1ac5", "canonical_center_text_hash": "14f4b42f183583f06c9a4e473fc82e67b8679d0ac162135fb631cc98562a522d"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/14/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/14/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/14/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "15": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "56086022a2c2ceeed972a69beb7594243f1e2b09be987893500d37a9527587d1", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "4abf4a8e67412488d65490b4e292043351122be09f03af97150b384dc7ee11bb", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=15", "label": "EXPLAIN"}, {"url": "/docs/15/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/15/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=15", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=15", "label": "work_mem"}, {"url": "/wiki/indexam/?v=15", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 15.19 source archive", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "source_url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "line": 1243, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1243", "sha256": "bb3b442d0f1b098aa8707335250102f027a596cd94117308bd16d1d36b258f5c", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "19836c50a272741a4eac653541e655437c2e00710a541e5348d6a277d0669d7c", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "56086022a2c2ceeed972a69beb7594243f1e2b09be987893500d37a9527587d1", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "fb4a4c8165495299131173680bc02a950d88e1ff610231fd97997bc0c9afc1d7", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "4abf4a8e67412488d65490b4e292043351122be09f03af97150b384dc7ee11bb", "archive_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/15/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "15", "build_id": 101, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "d842974e11d60f39bee19269d456c1cf6a01bc6c2c3ac27d8d1e7966ef5f46b9", "fragment_sha256": "112b7f80373e31ed2d9c4e8fb4e17eb6864c3b671186e83d61fd6c41f8b56d15", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:6bce1a2df9170cb1146a1411c5547190856638221a6539e618ee1016c9f493ad", "translated_from_revision": null}, "body_sha256": "403bba35a96d375a8b8a3de4340aec7659e0caf5e507ab7ad686f077e3aba585", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 15.19 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 15.19 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "15", "text_hash": "6854ef281feaa902aeff5b6e70f2b83e9c638869e86903bdf0c6a555b77f35e1", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/15/performance-tips.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "15", "build_id": 101, "page_key": "performance-tips.html", "extraction": "concept-introduction", "source_hash": "d842974e11d60f39bee19269d456c1cf6a01bc6c2c3ac27d8d1e7966ef5f46b9", "fragment_sha256": "112b7f80373e31ed2d9c4e8fb4e17eb6864c3b671186e83d61fd6c41f8b56d15", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:6bce1a2df9170cb1146a1411c5547190856638221a6539e618ee1016c9f493ad", "translated_from_revision": null}, "body_sha256": "403bba35a96d375a8b8a3de4340aec7659e0caf5e507ab7ad686f077e3aba585", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 15.19 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 15.19 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/15/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/15/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/15/performance-tips.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "15", "link_map": {"/zh/docs/15/performance-tips.html#USING-EXPLAIN-BASICS": "/docs/15/performance-tips.html#USING-EXPLAIN-BASICS", "/zh/docs/15/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/15/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/15/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/15/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/15/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/15/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/15/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "ae382a71552c7108ca37ab0b00cc1d3e70b7cc9a8ef856a32d748c504d1e4565", "content_hash": "6854ef281feaa902aeff5b6e70f2b83e9c638869e86903bdf0c6a555b77f35e1", "source_database": "center", "source_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 15.19 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/15/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 15.19 \u00b7 using-explain", "sha256": "d1f509457c647da453d2575c772d91022a0f115dd84f9a3b20f5ff25a243648f"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 15.19 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/15/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/15/facts/0/label": "Core node tag", "/versions/15/facts/1/label": "Structured EXPLAIN Node Type", "/versions/15/facts/2/label": "Inputs", "/versions/15/facts/2/value": "An index", "/versions/15/facts/3/label": "Output", "/versions/15/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/15/facts/4/label": "Executor initializer", "/versions/15/facts/5/label": "Memory mechanism", "/versions/15/tables/0/title": "EXPLAIN labels in this source build", "/versions/15/related/1/label": "Using EXPLAIN", "/versions/15/related/2/label": "Parallel plans", "/versions/15/related/5/label": "Index AM", "/versions/15/sections/0/title": "EXPLAIN names and attributes", "/versions/15/sections/1/title": "Memory and temporary storage", "/versions/15/sections/2/title": "Parallel execution and instrumentation", "/versions/15/sections/3/title": "Examples from this manual build", "/versions/15/sections/4/title": "Executor implementation notes", "/versions/15/sections/5/title": "EXPLAIN identity in core source", "/versions/15/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/15/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/15/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/15/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/15/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/15/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/15/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/15/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/15/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/15/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/15/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/15/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/15/tables/0/columns/0/label": "Text-format label", "/versions/15/tables/0/columns/1/label": "Structured node identity", "/versions/15/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 15.19 manual; it was not executed for this collection.", "/versions/15/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/15/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 15.19 manual; it was not executed for this collection.", "/versions/15/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "904cfd3ac97e05ea59e832efea91fbc99ab0861413af48f256a2427ed94faa4b", "canonical_center_text_hash": "6854ef281feaa902aeff5b6e70f2b83e9c638869e86903bdf0c6a555b77f35e1"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/15/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/15/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/15/performance-tips.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "16": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "8d736785d991187397f0ceb21eb8b59bbab598d0a5dde1c36976239a34306a48", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "d0a2549a532f65299aea5599ee1bedffe47101a07d0de21bec07068547ae237e", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=16", "label": "EXPLAIN"}, {"url": "/docs/16/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/16/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=16", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=16", "label": "work_mem"}, {"url": "/wiki/indexam/?v=16", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 16.15 source archive", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "source_url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "line": 1276, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1276", "sha256": "8e017f0116dbea471339b40c37a667cc9f95039e7e0329c783e5e8ce194de7e1", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "e48c08e555f8cb4e4bb43df516c4b8906ce9bc374b2a745d98a1fc8c22cc5099", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "8d736785d991187397f0ceb21eb8b59bbab598d0a5dde1c36976239a34306a48", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "97db47353db76326b874589a5ad0a04501cc74cd72e237e7bd956e7472c41f1f", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "d0a2549a532f65299aea5599ee1bedffe47101a07d0de21bec07068547ae237e", "archive_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "16", "build_id": 103, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "394de9d6895c7909a1a823408b8c980c5415db8ca3c212e23d6e7e9b6e01c6cc", "fragment_sha256": "2d2013ab6e4f70279d4bad2feee2ec1a3ae9eb1318e12da418a3f94a76625679", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:80579a071736780f9c4022bb5148e1fb1256f1a33591306af67816e9e9bf3a9b", "translated_from_revision": null}, "body_sha256": "0196e53039b79a649819ddfe785909d0faae4d384f6c7f1c712ab9cb3731fae2", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 16.15 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 16.15 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "16", "text_hash": "77129fee22d8fceeadfed859191fe85f8f1b575e92bc9173c35bbf87578d3a64", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "16", "build_id": 103, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "394de9d6895c7909a1a823408b8c980c5415db8ca3c212e23d6e7e9b6e01c6cc", "fragment_sha256": "2d2013ab6e4f70279d4bad2feee2ec1a3ae9eb1318e12da418a3f94a76625679", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:80579a071736780f9c4022bb5148e1fb1256f1a33591306af67816e9e9bf3a9b", "translated_from_revision": null}, "body_sha256": "0196e53039b79a649819ddfe785909d0faae4d384f6c7f1c712ab9cb3731fae2", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 16.15 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 16.15 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/16/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/16/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/16/using-explain.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "16", "link_map": {"/zh/docs/16/using-explain.html#USING-EXPLAIN-BASICS": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "/zh/docs/16/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/16/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/16/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/16/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/16/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/16/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/16/using-explain.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "da4cba4e2e629d3b3589bcb5094ef64523433124d30af4de8a8378157ac2a4f4", "content_hash": "77129fee22d8fceeadfed859191fe85f8f1b575e92bc9173c35bbf87578d3a64", "source_database": "center", "source_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.07..229.20 rows=101 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 16.15 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..229.43 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=101 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/16/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 16.15 \u00b7 using-explain", "sha256": "bd8b86e5281cf0e52ad6e0e4bb8b6ff6510dac61982b44f0c1dd07d54012db3c"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 16.15 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/16/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/16/facts/0/label": "Core node tag", "/versions/16/facts/1/label": "Structured EXPLAIN Node Type", "/versions/16/facts/2/label": "Inputs", "/versions/16/facts/2/value": "An index", "/versions/16/facts/3/label": "Output", "/versions/16/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/16/facts/4/label": "Executor initializer", "/versions/16/facts/5/label": "Memory mechanism", "/versions/16/tables/0/title": "EXPLAIN labels in this source build", "/versions/16/related/1/label": "Using EXPLAIN", "/versions/16/related/2/label": "Parallel plans", "/versions/16/related/5/label": "Index AM", "/versions/16/sections/0/title": "EXPLAIN names and attributes", "/versions/16/sections/1/title": "Memory and temporary storage", "/versions/16/sections/2/title": "Parallel execution and instrumentation", "/versions/16/sections/3/title": "Examples from this manual build", "/versions/16/sections/4/title": "Executor implementation notes", "/versions/16/sections/5/title": "EXPLAIN identity in core source", "/versions/16/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/16/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/16/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/16/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/16/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/16/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/16/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/16/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/16/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/16/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/16/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/16/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/16/tables/0/columns/0/label": "Text-format label", "/versions/16/tables/0/columns/1/label": "Structured node identity", "/versions/16/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 16.15 manual; it was not executed for this collection.", "/versions/16/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/16/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 16.15 manual; it was not executed for this collection.", "/versions/16/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "dfeb9f514c52a172e97f2e974c75afa6752c81653427821f590e931e57bddd0a", "canonical_center_text_hash": "77129fee22d8fceeadfed859191fe85f8f1b575e92bc9173c35bbf87578d3a64"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/16/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a020.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/16/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/16/using-explain.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "17": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "f5c09276ecc3c8d7956a511944e4c4f832ff9180292dd7b398f7a109113a7276", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "10f9875b7384fddcd0750b41f7357933769a840c57a7bc0e29eecd4cdc5b8f4c", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=17", "label": "EXPLAIN"}, {"url": "/docs/17/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/17/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=17", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=17", "label": "work_mem"}, {"url": "/wiki/indexam/?v=17", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 17.11 source archive", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "source_url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "line": 1465, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1465", "sha256": "741251b1a3b6d269a52a673d42eb63b02e13a5872db7b359b137086ab21b63c8", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "a77576e158b94cb01fa8c5174ba133004eabdd727660323f8afc66c8d2e757b8", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "f5c09276ecc3c8d7956a511944e4c4f832ff9180292dd7b398f7a109113a7276", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "d390dd69e2d3f5085beb42b33e46ff0676a2959b916a12b82118a7e545f8e562", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "10f9875b7384fddcd0750b41f7357933769a840c57a7bc0e29eecd4cdc5b8f4c", "archive_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "17", "build_id": 105, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "b1252952c6d796f5e38c223b74ff667f2d19d677dcf85fe5269b782b830e5013", "fragment_sha256": "e2870d066840aa2e3c31457a93d824938a26590ee10ed3e1dffd5782ea3e1ee2", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:7340767258d21c21b36f373f1fff6bab2be18e0daca13a865129db6105c09efd", "translated_from_revision": null}, "body_sha256": "498d8bbfab24d5cbe11a868a078b7b38f39f127d077906ef8b91e12a338a247e", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 17.11 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 17.11 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "17", "text_hash": "dac46404594cc46b2b2dcd6354de131c3d5053e831f3c6e45c220cb1958252c2", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "anchor": "USING-EXPLAIN-BASICS", "locale": "zh-Hans", "version": "17", "build_id": 105, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "b1252952c6d796f5e38c223b74ff667f2d19d677dcf85fe5269b782b830e5013", "fragment_sha256": "e2870d066840aa2e3c31457a93d824938a26590ee10ed3e1dffd5782ea3e1ee2", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:7340767258d21c21b36f373f1fff6bab2be18e0daca13a865129db6105c09efd", "translated_from_revision": null}, "body_sha256": "498d8bbfab24d5cbe11a868a078b7b38f39f127d077906ef8b91e12a338a247e", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 17.11 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 17.11 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em class=\"firstterm\">\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code class=\"literal\">VALUES</code> \u5b50\u53e5\u548c <code class=\"literal\">FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code class=\"command\">EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code class=\"literal\">WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a class=\"xref\" href=\"/zh/docs/17/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a class=\"xref\" href=\"/zh/docs/17/runtime-config-query.html#GUC-SEQ-PAGE-COST\">seq_page_cost</a> \u8bbe\u4e3a <code class=\"literal\">1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/17/using-explain.html#USING-EXPLAIN-BASICS\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "17", "link_map": {"/zh/docs/17/using-explain.html#USING-EXPLAIN-BASICS": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "/zh/docs/17/runtime-config-query.html#GUC-SEQ-PAGE-COST": "/docs/17/runtime-config-query.html#GUC-SEQ-PAGE-COST", "/zh/docs/17/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS": "/docs/17/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/17/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/17/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/17/using-explain.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "fe51f3a8914fbb41605bb1ef6fc210a0e8bbc43832314f9ef101877a673c194e", "content_hash": "dac46404594cc46b2b2dcd6354de131c3d5053e831f3c6e45c220cb1958252c2", "source_database": "center", "source_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1anone extracted from this node implementation."]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 17.11 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/17/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 17.11 \u00b7 using-explain", "sha256": "8e3422c77496cc53bfc225ccadda3e82eb23c8c362b8eb95e7fb02cdb315ea78"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 17.11 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/17/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/17/facts/0/label": "Core node tag", "/versions/17/facts/1/label": "Structured EXPLAIN Node Type", "/versions/17/facts/2/label": "Inputs", "/versions/17/facts/2/value": "An index", "/versions/17/facts/3/label": "Output", "/versions/17/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/17/facts/4/label": "Executor initializer", "/versions/17/facts/5/label": "Memory mechanism", "/versions/17/tables/0/title": "EXPLAIN labels in this source build", "/versions/17/related/1/label": "Using EXPLAIN", "/versions/17/related/2/label": "Parallel plans", "/versions/17/related/5/label": "Index AM", "/versions/17/sections/0/title": "EXPLAIN names and attributes", "/versions/17/sections/1/title": "Memory and temporary storage", "/versions/17/sections/2/title": "Parallel execution and instrumentation", "/versions/17/sections/3/title": "Examples from this manual build", "/versions/17/sections/4/title": "Executor implementation notes", "/versions/17/sections/5/title": "EXPLAIN identity in core source", "/versions/17/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/17/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/17/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/17/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/17/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/17/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/17/sections/2/paragraphs/1": "Callbacks in this build: none extracted from this node implementation.", "/versions/17/sections/4/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/17/sections/4/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/17/sections/4/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/17/sections/4/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/17/sections/4/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/17/tables/0/columns/0/label": "Text-format label", "/versions/17/tables/0/columns/1/label": "Structured node identity", "/versions/17/sections/3/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 17.11 manual; it was not executed for this collection.", "/versions/17/sections/3/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/17/sections/3/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 17.11 manual; it was not executed for this collection.", "/versions/17/sections/3/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "955ebd9aaecbe80075ddf20302eaf0ae2ff0fb23b61eb5acb22f5a79cce93f28", "canonical_center_text_hash": "dac46404594cc46b2b2dcd6354de131c3d5053e831f3c6e45c220cb1958252c2"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": []}, "comparison_hash": "b81114c9864c11cc43d2183d9c32e01632186cff8cced0f6ff218f56f56485c0", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": [], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a\u8be5\u8282\u70b9\u5b9e\u73b0\u4e2d\u672a\u63d0\u53d6\u5230\u6b64\u7c7b\u56de\u8c03\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u67e5\u8be2\u8ba1\u5212\u7684\u7ed3\u6784\u662f\u4e00\u68f5\u7531<em>\u8ba1\u5212\u8282\u70b9</em>\u7ec4\u6210\u7684\u6811\u3002\u6811\u7684\u6700\u5e95\u5c42\u662f\u626b\u63cf\u8282\u70b9\uff0c\u5b83\u4eec\u4ece\u8868\u4e2d\u8fd4\u56de\u539f\u59cb\u884c\u3002\u4e0d\u540c\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u5bf9\u5e94\u4e0d\u540c\u7c7b\u578b\u7684\u626b\u63cf\u8282\u70b9\uff0c\u4f8b\u5982\u987a\u5e8f\u626b\u63cf\u3001\u7d22\u5f15\u626b\u63cf\u548c\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u3002\u4e5f\u6709\u4e00\u4e9b\u5e76\u975e\u8868\u7684\u884c\u6765\u6e90\uff0c\u4f8b\u5982 <code>VALUES</code> \u5b50\u53e5\u548c <code>FROM</code> \u4e2d\u7684\u8fd4\u56de\u96c6\u5408\u51fd\u6570\uff0c\u5b83\u4eec\u4e5f\u5404\u81ea\u6709\u5bf9\u5e94\u7684\u626b\u63cf\u8282\u70b9\u7c7b\u578b\u3002\u5982\u679c\u67e5\u8be2\u9700\u8981\u5bf9\u539f\u59cb\u884c\u6267\u884c\u8fde\u63a5\u3001\u805a\u5408\u3001\u6392\u5e8f\u6216\u5176\u4ed6\u64cd\u4f5c\uff0c\u90a3\u4e48\u626b\u63cf\u8282\u70b9\u4e4b\u4e0a\u8fd8\u4f1a\u51fa\u73b0\u989d\u5916\u7684\u8282\u70b9\u6765\u5b8c\u6210\u8fd9\u4e9b\u64cd\u4f5c\u3002\u540c\u6837\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u901a\u5e38\u4e0d\u6b62\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u73b0\u4e0d\u540c\u7684\u8282\u70b9\u7c7b\u578b\u3002<code>EXPLAIN</code> \u4f1a\u4e3a\u8ba1\u5212\u6811\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u8f93\u51fa\u4e00\u884c\uff0c\u663e\u793a\u57fa\u672c\u8282\u70b9\u7c7b\u578b\u4ee5\u53ca\u89c4\u5212\u5668\u5bf9\u8be5\u8ba1\u5212\u8282\u70b9\u6267\u884c\u4ee3\u4ef7\u7684\u4f30\u8ba1\u503c\u3002\u8fd8\u53ef\u80fd\u51fa\u73b0\u76f8\u5bf9\u8282\u70b9\u6458\u8981\u884c\u7f29\u8fdb\u7684\u9644\u52a0\u884c\uff0c\u7528\u6765\u663e\u793a\u8be5\u8282\u70b9\u7684\u66f4\u591a\u5c5e\u6027\u3002\u7b2c\u4e00\u884c\uff0c\u4e5f\u5c31\u662f\u6700\u9876\u5c42\u8282\u70b9\u7684\u6458\u8981\u884c\uff0c\u7ed9\u51fa\u4e86\u6574\u4e2a\u8ba1\u5212\u7684\u4f30\u8ba1\u603b\u6267\u884c\u4ee3\u4ef7\uff1b\u89c4\u5212\u5668\u529b\u56fe\u6700\u5c0f\u5316\u7684\u6b63\u662f\u8fd9\u4e2a\u6570\u5b57\u3002\n   </p><p>\n    \u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u4ec5\u7528\u4e8e\u5c55\u793a\u8f93\u51fa\u7684\u6837\u5b50\uff1a\n\n</p><p>\n    \u7531\u4e8e\u8fd9\u4e2a\u67e5\u8be2\u6ca1\u6709 <code>WHERE</code> \u5b50\u53e5\uff0c\u5b83\u5fc5\u987b\u626b\u63cf\u8868\u4e2d\u7684\u6240\u6709\u884c\uff0c\u56e0\u6b64\u89c4\u5212\u5668\u9009\u62e9\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u987a\u5e8f\u626b\u63cf\u8ba1\u5212\u3002\u5706\u62ec\u53f7\u4e2d\u7684\u6570\u5b57\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8868\u793a\uff1a\n\n    </p><p>\n    \u8fd9\u4e9b\u4ee3\u4ef7\u4f7f\u7528\u7531\u89c4\u5212\u5668\u4ee3\u4ef7\u53c2\u6570\u51b3\u5b9a\u7684\u4efb\u610f\u5355\u4f4d\u6765\u8861\u91cf\uff08\u89c1<a href=\"/zh/docs/17/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS\" rel=\"nofollow\">\u7b2c\u00a019.7.2\u00a0\u8282</a>\uff09\u3002\u4f20\u7edf\u4e0a\u901a\u5e38\u4ee5\u78c1\u76d8\u9875\u8bfb\u53d6\u4f5c\u4e3a\u4ee3\u4ef7\u5355\u4f4d\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u60ef\u4f8b\u4e0a\u5c06 <a href=\"/zh/docs/17/runtime-config-query.html#GUC-SEQ-PAGE-COST\" rel=\"nofollow\">seq_page_cost</a> \u8bbe\u4e3a <code>1.0</code>\uff0c\u5176\u4ed6\u4ee3\u4ef7\u53c2\u6570\u90fd\u76f8\u5bf9\u5b83\u6765\u8bbe\u5b9a\u3002\u672c\u8282\u4e2d\u7684\u793a\u4f8b\u90fd\u4f7f\u7528\u9ed8\u8ba4\u4ee3\u4ef7\u53c2\u6570\u3002\n   </p><p><a href=\"/zh/docs/17/using-explain.html#USING-EXPLAIN-BASICS\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "18": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "7eed6439851a24333252fcce6e7c71856e8da9bdaee78597401b11afdbb093c0", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "e2453b7155d55db8c3a59bc929362f01d3f9692b0a483e5aa81a7b6c50db6102", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=18", "label": "EXPLAIN"}, {"url": "/docs/18/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/18/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=18", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=18", "label": "work_mem"}, {"url": "/wiki/indexam/?v=18", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 18.6 source archive", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "line": 1450, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1450", "sha256": "34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "f8a06a3f539077249b20664b2812433db6d7bd12b2c0ca633525db43d06f112a", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "7eed6439851a24333252fcce6e7c71856e8da9bdaee78597401b11afdbb093c0", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "52422b327a8049fbbb20d8b96008a0fc0a6fafa60f7eff3c695d5b2e83830120", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "e2453b7155d55db8c3a59bc929362f01d3f9692b0a483e5aa81a7b6c50db6102", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "d2f749744b3ac5aa2eb0154f295e8163903cd20fcc130c74c6172cdf2ae3a9df", "fragment_sha256": "bd141e848f811d1c8513c49e1a6510edcdcbaac6c111b76d7e421d315346e90d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "d8fe857fdab0fdf71ab6903a7a530f85914366f0a0f720bfff56bc1941fa7523", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "18", "text_hash": "5dddd6e1de583527ca00f345ba03ac4da0caf08b880c8d808b0c93ef9517d96a", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "d2f749744b3ac5aa2eb0154f295e8163903cd20fcc130c74c6172cdf2ae3a9df", "fragment_sha256": "bd141e848f811d1c8513c49e1a6510edcdcbaac6c111b76d7e421d315346e90d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "d8fe857fdab0fdf71ab6903a7a530f85914366f0a0f720bfff56bc1941fa7523", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code class=\"command\">EXPLAIN</code> \u7684 <code class=\"literal\">ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code class=\"command\">EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code class=\"command\">EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span class=\"quote\">\u201c<span class=\"quote\">actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code class=\"literal\">cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code class=\"literal\">loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code class=\"literal\">loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code class=\"literal\">tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code class=\"command\">EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "18", "link_map": {"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE": "/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "ed8623e0bdfadd70a31b750726cc0cae6c21a77dab7f351488477d30b6f0c8e0", "content_hash": "5dddd6e1de583527ca00f345ba03ac4da0caf08b880c8d808b0c93ef9517d96a", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [{"url": "/docs/18/using-explain.html", "method": "same-major semantic node", "sha256": "b8835ec9adbc70ec150667a6b5443f8d298222dc0cc8c2bd1abb1c1d64895904", "language": "zh", "matched_nodes": ["#USING-EXPLAIN/div[8]/p[8]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/18/facts/0/label": "Core node tag", "/versions/18/facts/1/label": "Structured EXPLAIN Node Type", "/versions/18/facts/2/label": "Inputs", "/versions/18/facts/2/value": "An index", "/versions/18/facts/3/label": "Output", "/versions/18/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/18/facts/4/label": "Executor initializer", "/versions/18/facts/5/label": "Memory mechanism", "/versions/18/tables/0/title": "EXPLAIN labels in this source build", "/versions/18/related/1/label": "Using EXPLAIN", "/versions/18/related/2/label": "Parallel plans", "/versions/18/related/5/label": "Index AM", "/versions/18/sections/0/title": "EXPLAIN names and attributes", "/versions/18/sections/1/title": "Memory and temporary storage", "/versions/18/sections/2/title": "Parallel execution and instrumentation", "/versions/18/sections/3/title": "Same-version manual discussion", "/versions/18/sections/4/title": "Examples from this manual build", "/versions/18/sections/5/title": "Executor implementation notes", "/versions/18/sections/6/title": "EXPLAIN identity in core source", "/versions/18/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/18/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/18/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/18/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/18/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/18/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/18/sections/2/paragraphs/1": "Callbacks in this build: ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation.", "/versions/18/sections/3/paragraphs/0": "Index Scan nodes (as well as Bitmap Index Scan and Index-Only Scan nodes) show an \u201c Index Searches \u201d line that reports the total number of searches across all node executions/ loops :", "/versions/18/sections/3/paragraphs/1": "Here we see a Bitmap Index Scan node that needed 4 separate index searches. The scan had to search the index from the tenk1_thous_tenthous index root page once per integer value from the predicate's IN construct. However, the number of index searches often won't have such a simple correspondence to the query predicate:", "/versions/18/sections/5/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/18/sections/5/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/18/sections/5/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/18/sections/5/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/18/sections/5/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/18/tables/0/columns/0/label": "Text-format label", "/versions/18/tables/0/columns/1/label": "Structured node identity", "/versions/18/sections/4/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 18.6 manual; it was not executed for this collection.", "/versions/18/sections/4/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/18/sections/4/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 18.6 manual; it was not executed for this collection.", "/versions/18/sections/4/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "855e33ae188369035d13ceabcd53070c74f3db8662a05b8592e8e6c5378af6c2", "canonical_center_text_hash": "5dddd6e1de583527ca00f345ba03ac4da0caf08b880c8d808b0c93ef9517d96a"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"]}, "comparison_hash": "08e8d1afde24882a70dccba204ec21bdcea148fa12f7f53d14a221b80af1cc37", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "center_zh_rendered": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "19": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "73fc6da6cd4487ee8f49010195c5584a9d9aa6528e4e0f80481670b637755417", "archive_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, {"url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "3394cc4f8c9e397b78f6b0d99fba931fd809450ec7b5ff051798ecbd0dcf3b32", "archive_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=19", "label": "EXPLAIN"}, {"url": "/docs/19/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/19/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=19", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=19", "label": "work_mem"}, {"url": "/wiki/indexam/?v=19", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 19rc1 source archive", "label": "19rc1", "major": "19", "channel": "preview", "revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "source_url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "line": 1462, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1462", "sha256": "8b115b1c194a4b54ae630209a741e293b1df49a9052f10b2de9ca092a48998e3", "archive_sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, {"url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "5e39b2037bed672da55104229ecc32da5abde44c26bcad01479edcfa044d09ed", "archive_sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, {"url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "73fc6da6cd4487ee8f49010195c5584a9d9aa6528e4e0f80481670b637755417", "archive_sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, {"url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "8d7bcf0e3b0d990a7bf35af47099d6d77207594b3136ff17104ed80bfaa47022", "archive_sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, {"url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "3394cc4f8c9e397b78f6b0d99fba931fd809450ec7b5ff051798ecbd0dcf3b32", "archive_sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, {"url": "/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE", "path": "using-explain.html", "label": "PostgreSQL 19rc1 \u00b7 using-explain", "sha256": "aa29ae0e71c96497d59d957e6226a31c86894acefcffd1e819b009079cac3f27"}, {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19rc1 \u00b7 using-explain", "sha256": "aa29ae0e71c96497d59d957e6226a31c86894acefcffd1e819b009079cac3f27"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "19", "build_id": 109, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "9bbb1ef5924e4788a3dc2642828383c67ab8651fb6b0e45924c454f095b0ff47", "fragment_sha256": "337f13b77e8b42d94a4b4840abfa2c9decaf86f4fa09e274f6fcb447aaf934ca", "source_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:65fda1f1b62a89992b84014c9157e61b67dbe8190e93945826efec668fad038c", "translated_from_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "body_sha256": "37536523503ad702d01fc2c42e9aae4f9bf53a9d10e4f572a995eb93ff7896f8", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19beta4 \u00b7 using-explain", "sha256": "52f111fbd213e2200146319d01a9dcc2ea90001617d2a28edc52f7954c2dd70b"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 19beta4 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19beta4 \u00b7 using-explain", "sha256": "52f111fbd213e2200146319d01a9dcc2ea90001617d2a28edc52f7954c2dd70b"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 19beta4 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "19", "text_hash": "d9e597ee117c808da41a1e0f00b852d8f1abc200f2185c3972199a028f7b86d3", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "19", "build_id": 109, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "9bbb1ef5924e4788a3dc2642828383c67ab8651fb6b0e45924c454f095b0ff47", "fragment_sha256": "337f13b77e8b42d94a4b4840abfa2c9decaf86f4fa09e274f6fcb447aaf934ca", "source_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:65fda1f1b62a89992b84014c9157e61b67dbe8190e93945826efec668fad038c", "translated_from_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "body_sha256": "37536523503ad702d01fc2c42e9aae4f9bf53a9d10e4f572a995eb93ff7896f8", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19beta4 \u00b7 using-explain", "sha256": "52f111fbd213e2200146319d01a9dcc2ea90001617d2a28edc52f7954c2dd70b"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 19beta4 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19beta4 \u00b7 using-explain", "sha256": "52f111fbd213e2200146319d01a9dcc2ea90001617d2a28edc52f7954c2dd70b"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 19beta4 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code class=\"command\">EXPLAIN</code> \u7684 <code class=\"literal\">ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code class=\"command\">EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code class=\"command\">EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span class=\"quote\">\u201c<span class=\"quote\">actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code class=\"literal\">cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code class=\"literal\">loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code class=\"literal\">loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\uff0c\u4ee5\u53ca\u6240\u6709\u6267\u884c\u4e2d\u5904\u7406\u7684\u603b\u884c\u6570\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code class=\"literal\">tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\uff0c\u5e76\u5904\u7406\u4e86\u603b\u5171 10 \u884c\u3002\n   </p><p>\n    \u5e76\u884c\u6267\u884c\u4e5f\u4f1a\u5bfc\u81f4\u8282\u70b9\u88ab\u6267\u884c\u591a\u6b21\u3002\u8fd9\u540c\u6837\u4f1a\u7531 <code class=\"literal\">loops</code> \u503c\u4f53\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u8c03\u6574\u4e00\u4e9b\u89c4\u5212\u5668\u8bbe\u7f6e\uff0c\u8ba9\u89c4\u5212\u5668\u4e3a\u4e0a\u9762\u7684\u67e5\u8be2\u9009\u62e9\u5e76\u884c\u8ba1\u5212\uff1a\n   </p><p><a href=\"/zh/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "19", "link_map": {"/zh/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE": "/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\uff0c\u4ee5\u53ca\u6240\u6709\u6267\u884c\u4e2d\u5904\u7406\u7684\u603b\u884c\u6570\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\uff0c\u5e76\u5904\u7406\u4e86\u603b\u5171 10 \u884c\u3002\n   </p><p>\n    \u5e76\u884c\u6267\u884c\u4e5f\u4f1a\u5bfc\u81f4\u8282\u70b9\u88ab\u6267\u884c\u591a\u6b21\u3002\u8fd9\u540c\u6837\u4f1a\u7531 <code>loops</code> \u503c\u4f53\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u8c03\u6574\u4e00\u4e9b\u89c4\u5212\u5668\u8bbe\u7f6e\uff0c\u8ba9\u89c4\u5212\u5668\u4e3a\u4e0a\u9762\u7684\u67e5\u8be2\u9009\u62e9\u5e76\u884c\u8ba1\u5212\uff1a\n   </p><p><a href=\"/zh/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "d8dc492378c865c110af6580053ee70c0ab5fd4b03c1e146f431bc1b82b84e8d", "content_hash": "d9e597ee117c808da41a1e0f00b852d8f1abc200f2185c3972199a028f7b86d3", "source_database": "center", "source_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19beta4 \u00b7 using-explain", "sha256": "52f111fbd213e2200146319d01a9dcc2ea90001617d2a28edc52f7954c2dd70b"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 19beta4 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/19/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 19beta4 \u00b7 using-explain", "sha256": "52f111fbd213e2200146319d01a9dcc2ea90001617d2a28edc52f7954c2dd70b"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 19beta4 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [{"url": "/docs/19/using-explain.html", "method": "same-major semantic node", "sha256": "7cc78f59bf29afb1811ece53e9d5c572a3f634d66d7422fb8761f19bc6811492", "language": "zh", "matched_nodes": ["#USING-EXPLAIN/div[8]/p[11]"]}], "language": "zh", "original_text": {"/versions/19/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/19/facts/0/label": "Core node tag", "/versions/19/facts/1/label": "Structured EXPLAIN Node Type", "/versions/19/facts/2/label": "Inputs", "/versions/19/facts/2/value": "An index", "/versions/19/facts/3/label": "Output", "/versions/19/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/19/facts/4/label": "Executor initializer", "/versions/19/facts/5/label": "Memory mechanism", "/versions/19/tables/0/title": "EXPLAIN labels in this source build", "/versions/19/related/1/label": "Using EXPLAIN", "/versions/19/related/2/label": "Parallel plans", "/versions/19/related/5/label": "Index AM", "/versions/19/sections/0/title": "EXPLAIN names and attributes", "/versions/19/sections/1/title": "Memory and temporary storage", "/versions/19/sections/2/title": "Parallel execution and instrumentation", "/versions/19/sections/3/title": "Same-version manual discussion", "/versions/19/sections/4/title": "Examples from this manual build", "/versions/19/sections/5/title": "Executor implementation notes", "/versions/19/sections/6/title": "EXPLAIN identity in core source", "/versions/19/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/19/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/19/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/19/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/19/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/19/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/19/sections/2/paragraphs/1": "Callbacks in this build: ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation.", "/versions/19/sections/3/paragraphs/0": "Index Scan nodes (as well as Bitmap Index Scan and Index-Only Scan nodes) show an \u201c Index Searches \u201d line that reports the total number of searches across all node executions/ loops :", "/versions/19/sections/3/paragraphs/1": "Here we see a Bitmap Index Scan node that needed 4 separate index searches. The scan had to search the index from the tenk1_thous_tenthous index root page once per integer value from the predicate's IN construct. However, the number of index searches often won't have such a simple correspondence to the query predicate:", "/versions/19/sections/5/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/19/sections/5/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/19/sections/5/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/19/sections/5/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/19/sections/5/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/19/tables/0/columns/0/label": "Text-format label", "/versions/19/tables/0/columns/1/label": "Structured node identity", "/versions/19/sections/4/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 19beta4 manual; it was not executed for this collection.", "/versions/19/sections/4/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/19/sections/4/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 19beta4 manual; it was not executed for this collection.", "/versions/19/sections/4/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "21ae4e31f3b73711e508524900a2e86caa3c2e5c6ca088e4f04707cc676965de", "canonical_center_text_hash": "d9e597ee117c808da41a1e0f00b852d8f1abc200f2185c3972199a028f7b86d3"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"]}, "comparison_hash": "08e8d1afde24882a70dccba204ec21bdcea148fa12f7f53d14a221b80af1cc37", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\uff0c\u4ee5\u53ca\u6240\u6709\u6267\u884c\u4e2d\u5904\u7406\u7684\u603b\u884c\u6570\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\uff0c\u5e76\u5904\u7406\u4e86\u603b\u5171 10 \u884c\u3002\n   </p><p>\n    \u5e76\u884c\u6267\u884c\u4e5f\u4f1a\u5bfc\u81f4\u8282\u70b9\u88ab\u6267\u884c\u591a\u6b21\u3002\u8fd9\u540c\u6837\u4f1a\u7531 <code>loops</code> \u503c\u4f53\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u8c03\u6574\u4e00\u4e9b\u89c4\u5212\u5668\u8bbe\u7f6e\uff0c\u8ba9\u89c4\u5212\u5668\u4e3a\u4e0a\u9762\u7684\u67e5\u8be2\u9009\u62e9\u5e76\u884c\u8ba1\u5212\uff1a\n   </p><p><a href=\"/zh/docs/19/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "source_revalidation": {"kind": "static-same-version-source-and-manual-replay", "audit": "wiki-audit-20261023", "runtime_rerun": false, "compared_fields": "entity membership and source-derived facts; presentation markup normalized", "source_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "previous_source_revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}}, "20": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "1beaa9f9767d3d4fd4670f8a1e9b78fed47485973ff842b5b9e620e94edd14d1", "archive_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, {"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "3394cc4f8c9e397b78f6b0d99fba931fd809450ec7b5ff051798ecbd0dcf3b32", "archive_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=20", "label": "EXPLAIN"}, {"url": "/docs/devel/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/devel/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=20", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=20", "label": "work_mem"}, {"url": "/wiki/indexam/?v=20", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 20devel source archive", "label": "20devel", "major": "20", "channel": "devel", "revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "source_url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "line": 1462, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1462", "sha256": "f82f238e2e6e249e10daf2e257728494ec10de1695fcf05feaadfd7f6bf78600", "archive_sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, {"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "5e39b2037bed672da55104229ecc32da5abde44c26bcad01479edcfa044d09ed", "archive_sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, {"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "1beaa9f9767d3d4fd4670f8a1e9b78fed47485973ff842b5b9e620e94edd14d1", "archive_sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, {"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "aa3c27b465209c0ecd1f5e0186d39110a75ed7aafb9a196d483fccb5fc641c6b", "archive_sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, {"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "3394cc4f8c9e397b78f6b0d99fba931fd809450ec7b5ff051798ecbd0dcf3b32", "archive_sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "afce066fbaecd0b7ce78ba30d776557731e46ad057c9dda332754a90e5fe59ac"}, {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "afce066fbaecd0b7ce78ba30d776557731e46ad057c9dda332754a90e5fe59ac"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "20", "build_id": 111, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "436517563e51b6d851ef143e70d01f5f68fe0a01e00a0d507e7bd79d7570aa25", "fragment_sha256": "337f13b77e8b42d94a4b4840abfa2c9decaf86f4fa09e274f6fcb447aaf934ca", "source_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:98c980963b401d40bd50df72b909e7523e3148b8fdb48edd897de2efb67e5235", "translated_from_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "body_sha256": "821a31c7006f02da1d7a40f30b444f8bd5d8fbfe173d39e2954da08cbd953802", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "99cfea3035876ea63f88b75ba8c964b51a32a70606544e09f769c0b60a234b31"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 20devel \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "99cfea3035876ea63f88b75ba8c964b51a32a70606544e09f769c0b60a234b31"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 20devel \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "20", "text_hash": "1df1d8f6674558dbf1614e75b5251f3918dc922ea778aea10c928babecf423b8", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "20", "build_id": 111, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "436517563e51b6d851ef143e70d01f5f68fe0a01e00a0d507e7bd79d7570aa25", "fragment_sha256": "337f13b77e8b42d94a4b4840abfa2c9decaf86f4fa09e274f6fcb447aaf934ca", "source_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:98c980963b401d40bd50df72b909e7523e3148b8fdb48edd897de2efb67e5235", "translated_from_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "body_sha256": "821a31c7006f02da1d7a40f30b444f8bd5d8fbfe173d39e2954da08cbd953802", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "99cfea3035876ea63f88b75ba8c964b51a32a70606544e09f769c0b60a234b31"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 20devel \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "99cfea3035876ea63f88b75ba8c964b51a32a70606544e09f769c0b60a234b31"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 20devel \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code class=\"command\">EXPLAIN</code> \u7684 <code class=\"literal\">ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code class=\"command\">EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code class=\"command\">EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span class=\"quote\">\u201c<span class=\"quote\">actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code class=\"literal\">cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code class=\"literal\">loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code class=\"literal\">loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\uff0c\u4ee5\u53ca\u6240\u6709\u6267\u884c\u4e2d\u5904\u7406\u7684\u603b\u884c\u6570\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code class=\"literal\">tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\uff0c\u5e76\u5904\u7406\u4e86\u603b\u5171 10 \u884c\u3002\n   </p><p>\n    \u5e76\u884c\u6267\u884c\u4e5f\u4f1a\u5bfc\u81f4\u8282\u70b9\u88ab\u6267\u884c\u591a\u6b21\u3002\u8fd9\u540c\u6837\u4f1a\u7531 <code class=\"literal\">loops</code> \u503c\u4f53\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u8c03\u6574\u4e00\u4e9b\u89c4\u5212\u5668\u8bbe\u7f6e\uff0c\u8ba9\u89c4\u5212\u5668\u4e3a\u4e0a\u9762\u7684\u67e5\u8be2\u9009\u62e9\u5e76\u884c\u8ba1\u5212\uff1a\n   </p><p><a href=\"/zh/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "20", "link_map": {"/zh/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE": "/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\uff0c\u4ee5\u53ca\u6240\u6709\u6267\u884c\u4e2d\u5904\u7406\u7684\u603b\u884c\u6570\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\uff0c\u5e76\u5904\u7406\u4e86\u603b\u5171 10 \u884c\u3002\n   </p><p>\n    \u5e76\u884c\u6267\u884c\u4e5f\u4f1a\u5bfc\u81f4\u8282\u70b9\u88ab\u6267\u884c\u591a\u6b21\u3002\u8fd9\u540c\u6837\u4f1a\u7531 <code>loops</code> \u503c\u4f53\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u8c03\u6574\u4e00\u4e9b\u89c4\u5212\u5668\u8bbe\u7f6e\uff0c\u8ba9\u89c4\u5212\u5668\u4e3a\u4e0a\u9762\u7684\u67e5\u8be2\u9009\u62e9\u5e76\u884c\u8ba1\u5212\uff1a\n   </p><p><a href=\"/zh/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "6979911cba5d713ea24b59f2cabc1964a8a3a0cf8781cb88e2f2a422b7803bc8", "content_hash": "1df1d8f6674558dbf1614e75b5251f3918dc922ea778aea10c928babecf423b8", "source_database": "center", "source_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "99cfea3035876ea63f88b75ba8c964b51a32a70606544e09f769c0b60a234b31"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 20devel \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/devel/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 20devel \u00b7 using-explain", "sha256": "99cfea3035876ea63f88b75ba8c964b51a32a70606544e09f769c0b60a234b31"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 20devel \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [{"url": "/docs/devel/using-explain.html", "method": "same-major semantic node", "sha256": "2744ee0e88d132c504bf5e102765edaabd393eb12c59294093db6d90b26dd65c", "language": "zh", "matched_nodes": ["#USING-EXPLAIN/div[8]/p[11]"]}], "language": "zh", "original_text": {"/summary": "Scans an index and produces a bitmap of matching tuple locations.", "/category": "Bitmap", "/versions/20/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/20/facts/0/label": "Core node tag", "/versions/20/facts/1/label": "Structured EXPLAIN Node Type", "/versions/20/facts/2/label": "Inputs", "/versions/20/facts/2/value": "An index", "/versions/20/facts/3/label": "Output", "/versions/20/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/20/facts/4/label": "Executor initializer", "/versions/20/facts/5/label": "Memory mechanism", "/versions/20/tables/0/title": "EXPLAIN labels in this source build", "/versions/20/related/1/label": "Using EXPLAIN", "/versions/20/related/2/label": "Parallel plans", "/versions/20/related/5/label": "Index AM", "/versions/20/sections/0/title": "EXPLAIN names and attributes", "/versions/20/sections/1/title": "Memory and temporary storage", "/versions/20/sections/2/title": "Parallel execution and instrumentation", "/versions/20/sections/3/title": "Same-version manual discussion", "/versions/20/sections/4/title": "Examples from this manual build", "/versions/20/sections/5/title": "Executor implementation notes", "/versions/20/sections/6/title": "EXPLAIN identity in core source", "/versions/20/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/20/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/20/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/20/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/20/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/20/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/20/sections/2/paragraphs/1": "Callbacks in this build: ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation.", "/versions/20/sections/3/paragraphs/0": "Index Scan nodes (as well as Bitmap Index Scan and Index-Only Scan nodes) show an \u201c Index Searches \u201d line that reports the total number of searches across all node executions/ loops :", "/versions/20/sections/3/paragraphs/1": "Here we see a Bitmap Index Scan node that needed 4 separate index searches. The scan had to search the index from the tenk1_thous_tenthous index root page once per integer value from the predicate's IN construct. However, the number of index searches often won't have such a simple correspondence to the query predicate:", "/versions/20/sections/5/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/20/sections/5/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/20/sections/5/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/20/sections/5/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/20/sections/5/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/20/tables/0/columns/0/label": "Text-format label", "/versions/20/tables/0/columns/1/label": "Structured node identity", "/versions/20/sections/4/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 20devel manual; it was not executed for this collection.", "/versions/20/sections/4/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/20/sections/4/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 20devel manual; it was not executed for this collection.", "/versions/20/sections/4/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "9b66deb9fdb2ba8c7882b816ca18e0684718f34313f852305f46c46dcf49ecb7", "canonical_center_text_hash": "1df1d8f6674558dbf1614e75b5251f3918dc922ea778aea10c928babecf423b8"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"]}, "comparison_hash": "08e8d1afde24882a70dccba204ec21bdcea148fa12f7f53d14a221b80af1cc37", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\uff0c\u4ee5\u53ca\u6240\u6709\u6267\u884c\u4e2d\u5904\u7406\u7684\u603b\u884c\u6570\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\uff0c\u5e76\u5904\u7406\u4e86\u603b\u5171 10 \u884c\u3002\n   </p><p>\n    \u5e76\u884c\u6267\u884c\u4e5f\u4f1a\u5bfc\u81f4\u8282\u70b9\u88ab\u6267\u884c\u591a\u6b21\u3002\u8fd9\u540c\u6837\u4f1a\u7531 <code>loops</code> \u503c\u4f53\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u8c03\u6574\u4e00\u4e9b\u89c4\u5212\u5668\u8bbe\u7f6e\uff0c\u8ba9\u89c4\u5212\u5668\u4e3a\u4e0a\u9762\u7684\u67e5\u8be2\u9009\u62e9\u5e76\u884c\u8ba1\u5212\uff1a\n   </p><p><a href=\"/zh/docs/devel/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "source_revalidation": {"kind": "static-same-version-source-and-manual-replay", "audit": "wiki-audit-20261023", "runtime_rerun": false, "compared_fields": "entity membership and source-derived facts; presentation markup normalized", "source_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "previous_source_revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}}}}, "snapshot": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "memory": {"evidence": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "7eed6439851a24333252fcce6e7c71856e8da9bdaee78597401b11afdbb093c0", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "e2453b7155d55db8c3a59bc929362f01d3f9692b0a483e5aa81a7b6c50db6102", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "mechanism": "bitmap-lossification", "description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "source_notes": []}, "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "related": [{"url": "/wiki/sql/explain/?v=18", "label": "EXPLAIN"}, {"url": "/docs/18/using-explain.html", "label": "\u4f7f\u7528 EXPLAIN"}, {"url": "/docs/18/parallel-plans.html", "label": "\u5e76\u884c\u8ba1\u5212"}, {"url": "/wiki/guc/enable_bitmapscan/?v=18", "label": "enable_bitmapscan"}, {"url": "/wiki/guc/work_mem/?v=18", "label": "work_mem"}, {"url": "/wiki/indexam/?v=18", "label": "\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5"}], "release": {"ref": "PostgreSQL 18.6 source archive", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "source_snapshot_utc": ""}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "line": 1450, "path": "src/backend/commands/explain.c", "label": "src/backend/commands/explain.c:1450", "sha256": "34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "line": 229, "path": "src/backend/executor/execProcnode.c", "label": "src/backend/executor/execProcnode.c:229", "sha256": "f8a06a3f539077249b20664b2812433db6d7bd12b2c0ca633525db43d06f112a", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/executor/nodeBitmapIndexscan.c", "label": "src/backend/executor/nodeBitmapIndexscan.c", "sha256": "7eed6439851a24333252fcce6e7c71856e8da9bdaee78597401b11afdbb093c0", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/include/nodes/plannodes.h", "label": "src/include/nodes/plannodes.h", "sha256": "52422b327a8049fbbb20d8b96008a0fc0a6fafa60f7eff3c695d5b2e83830120", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "path": "src/backend/nodes/tidbitmap.c", "label": "src/backend/nodes/tidbitmap.c", "sha256": "e2453b7155d55db8c3a59bc929362f01d3f9692b0a483e5aa81a7b6c50db6102", "archive_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "d2f749744b3ac5aa2eb0154f295e8163903cd20fcc130c74c6172cdf2ae3a9df", "fragment_sha256": "bd141e848f811d1c8513c49e1a6510edcdcbaac6c111b76d7e421d315346e90d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "d8fe857fdab0fdf71ab6903a7a530f85914366f0a0f720bfff56bc1941fa7523", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "facts_zh": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "node_tag": "T_BitmapIndexScan", "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "center_zh": {"title": "BitmapIndexScan", "locale": "zh-Hans", "source": {"key": "bitmap-index-scan", "locale": "zh-Hans", "version": "18", "text_hash": "5dddd6e1de583527ca00f345ba03ac4da0caf08b880c8d808b0c93ef9517d96a", "collection": "plan", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "payload": {"facts": [{"label": "\u6838\u5fc3\u8282\u70b9\u6807\u7b7e", "value": "T_BitmapIndexScan"}, {"label": "\u7ed3\u6784\u5316 EXPLAIN \u8282\u70b9\u7c7b\u578b", "value": "Bitmap Index Scan"}, {"label": "\u8f93\u5165", "value": "\u7d22\u5f15"}, {"label": "\u8f93\u51fa", "value": "\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\uff0c\u4e0d\u662f\u5143\u7ec4\u6d41"}, {"label": "\u6267\u884c\u5668\u521d\u59cb\u5316\u51fd\u6570", "value": "ExecInitBitmapIndexScan"}, {"label": "\u5185\u5b58\u673a\u5236", "value": "bitmap-lossification"}], "tables": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "zh_from": {"kind": "same-version-chinese-manual-with-authored-translation-of-reviewed-guidance", "manual": {"url": "/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE", "anchor": "USING-EXPLAIN-ANALYZE", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "using-explain.html", "extraction": "concept-introduction", "source_hash": "d2f749744b3ac5aa2eb0154f295e8163903cd20fcc130c74c6172cdf2ae3a9df", "fragment_sha256": "bd141e848f811d1c8513c49e1a6510edcdcbaac6c111b76d7e421d315346e90d", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "d8fe857fdab0fdf71ab6903a7a530f85914366f0a0f720bfff56bc1941fa7523", "runtime_rerun": false, "authored_translation": "authored-translation-of-reviewed-guidance", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sections": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code class=\"command\">EXPLAIN</code> \u7684 <code class=\"literal\">ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code class=\"command\">EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code class=\"command\">EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span class=\"quote\">\u201c<span class=\"quote\">actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code class=\"literal\">cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code class=\"literal\">loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code class=\"literal\">loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code class=\"literal\">tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code class=\"command\">EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "summary": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "version": "18", "link_map": {"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE": "/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE"}, "body_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "body_sha256": "ed8623e0bdfadd70a31b750726cc0cae6c21a77dab7f351488477d30b6f0c8e0", "content_hash": "5dddd6e1de583527ca00f345ba03ac4da0caf08b880c8d808b0c93ef9517d96a", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "tables_zh": [{"key": "explain-labels", "rows": [{"label": "Bitmap Index Scan", "identity": "Bitmap Index Scan"}], "title": "\u672c\u6784\u5efa\u4e2d\u7684 EXPLAIN \u6807\u7b7e", "columns": [{"key": "label", "label": "\u6587\u672c\u683c\u5f0f\u6807\u7b7e"}, {"key": "identity", "label": "\u7ed3\u6784\u5316\u8282\u70b9\u6807\u8bc6"}]}], "strategies": [], "description": ["\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002"], "sections_zh": [{"title": "EXPLAIN \u540d\u79f0\u4e0e\u5c5e\u6027", "paragraphs": ["\u7ed3\u6784\u5316\u683c\u5f0f\u4f7f\u7528\u4e0a\u8ff0 Node Type\u3002\u6587\u672c\u683c\u5f0f\u540d\u79f0\u8fd8\u53ef\u80fd\u5305\u542b\u64cd\u4f5c\u3001\u7b56\u7565\u3001\u8fde\u63a5\u7c7b\u578b\u3001\u626b\u63cf\u65b9\u5411\u6216\u805a\u5408\u9636\u6bb5\u5c5e\u6027\u3002", "\u6b64\u6e90\u7801\u8bb0\u5f55\u7684\u6587\u672c\u540d\u79f0\uff1aBitmap Index Scan.", "\u5e76\u884c\u611f\u77e5\u4e0e\u5e76\u884c\u5b89\u5168\u662f\u4e0d\u540c\u7684\u8ba1\u5212\u5c5e\u6027\u3002\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u5185\u8fd0\u884c\u7684\u8282\u70b9\u4e0d\u4e00\u5b9a\u662f\u5e76\u884c\u611f\u77e5\u8282\u70b9\u3002"]}, {"title": "\u5185\u5b58\u4e0e\u4e34\u65f6\u5b58\u50a8", "paragraphs": ["\u6b64\u8282\u70b9\u6309\u57fa\u4e8e work_mem \u7684\u9884\u7b97\u5206\u914d\u5143\u7ec4\u4f4d\u7f6e\u4f4d\u56fe\u3002\u4f4d\u56fe\u53ef\u4ee5\u4fdd\u7559\u9875\u7ea7\u6709\u635f\u6761\u76ee\uff0c\u800c\u4e0d\u8bb0\u5f55\u6bcf\u4e2a\u5143\u7ec4\u4f4d\u7f6e\uff0c\u56e0\u6b64\u4ecd\u53ef\u80fd\u9700\u8981\u5806\u91cd\u68c0\u3002"]}, {"title": "\u5e76\u884c\u6267\u884c\u4e0e\u8fd0\u884c\u4fe1\u606f\u91c7\u96c6", "paragraphs": ["\u4ee5\u4e0b\u6e90\u7801\u56de\u8c03\u53ef\u4ee5\u534f\u8c03\u6267\u884c\u6216\u6536\u96c6\u5de5\u4f5c\u8fdb\u7a0b\u7684\u6d4b\u91cf\u6570\u636e\u3002\u56de\u8c03\u5b58\u5728\u4e0d\u4ee3\u8868\u8be5\u8282\u70b9\u666e\u904d\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\u6216\u5171\u4eab\u72b6\u6001\u3002", "\u6b64\u6784\u5efa\u7684\u56de\u8c03\uff1aExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation."]}, {"title": "\u540c\u7248\u672c\u624b\u518c\u8bf4\u660e", "paragraphs": ["Index Scan \u8282\u70b9\uff08\u4ee5\u53ca Bitmap Index Scan \u548c Index-Only Scan \u8282\u70b9\uff09\u4f1a\u663e\u793a\u4e00\u884c \u201c Index Searches \u201d \uff0c\u7528\u4e8e\u62a5\u544a\u8de8 \u6240\u6709 \u8282\u70b9\u6267\u884c/ loops \u7684\u603b\u641c\u7d22\u6b21\u6570\uff1a", "\u8fd9\u91cc\u7684 Bitmap Index Scan \u8282\u70b9\u9700\u8981\u5206\u522b\u6267\u884c 4 \u6b21\u7d22\u5f15\u641c\u7d22\u3002\u5bf9\u4e8e\u8c13\u8bcd IN \u7ed3\u6784\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u503c\uff0c\u626b\u63cf\u90fd\u9700\u8981\u4ece tenk1_thous_tenthous \u7d22\u5f15\u7684\u6839\u9875\u5f00\u59cb\u641c\u7d22\u4e00\u6b21\u3002\u4e0d\u8fc7\uff0c\u7d22\u5f15\u641c\u7d22\u6b21\u6570\u5f80\u5f80\u4e0d\u4f1a\u4e0e\u67e5\u8be2\u8c13\u8bcd\u5b58\u5728\u5982\u6b64\u7b80\u5355\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a"]}, {"title": "\u672c\u7248\u624b\u518c\u4e2d\u7684\u793a\u4f8b", "blocks": [{"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.06..224.98 rows=100 width=244)\n   Recheck Cond: (unique1 < 100)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u8fdb\u4e00\u6b65\u6536\u7d27\u6761\u4ef6\uff1a"]}, {"code": "EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';\n\n                                  QUERY PLAN\n------------------------------------------------------------------------------\n Bitmap Heap Scan on tenk1  (cost=5.04..225.20 rows=1 width=244)\n   Recheck Cond: (unique1 < 100)\n   Filter: (stringu1 = 'xxx'::name)\n   ->  Bitmap Index Scan on tenk1_unique1  (cost=0.00..5.04 rows=100 width=0)\n         Index Cond: (unique1 < 100)", "source": {"url": "/docs/18/using-explain.html#USING-EXPLAIN-BASICS", "path": "using-explain.html", "label": "PostgreSQL 18.6 \u00b7 using-explain", "sha256": "60040c30180093418a0affe56dd27dff9df2504b705b38039589e458bf5c31ed"}, "paragraphs": ["\u793a\u4f8b\u6458\u81ea PostgreSQL 18.6 \u624b\u518c\uff1b\u672c\u767e\u79d1\u672a\u5b9e\u9645\u6267\u884c\u6b64\u793a\u4f8b\u3002", "\u73b0\u5728\u5411 WHERE \u5b50\u53e5\u518d\u6dfb\u52a0\u4e00\u4e2a\u6761\u4ef6\uff1a"]}]}, {"title": "\u6267\u884c\u5668\u5b9e\u73b0\u8bf4\u660e", "paragraphs": ["nodeBitmapIndexscan.c\uff1a\u652f\u6301\u5173\u7cfb\u4f4d\u56fe\u7d22\u5f15\u626b\u63cf\u7684\u4f8b\u7a0b\u3002", "\u5982\u679c\u6709\u8fd0\u884c\u65f6\u952e\u4e14\u5c1a\u672a\u8bbe\u7f6e\uff0c\u73b0\u5728\u5c31\u8bbe\u7f6e\u3002\u6570\u7ec4\u952e\u4e5f\u89c6\u4e3a\u8fd0\u884c\u65f6\u952e\uff1b\u6ce8\u610f\uff0c\u5982\u679c ExecReScan \u8fd4\u56de\u540e biss_RuntimeKeysReady \u4ecd\u4e3a false\uff0c\u5219\u5b58\u5728\u7a7a\u6570\u7ec4\u952e\uff0c\u6b64\u65f6\u4e0d\u5e94\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u3002", "\u51c6\u5907\u7ed3\u679c\u4f4d\u56fe\u3002\u901a\u5e38\u521b\u5efa\u65b0\u4f4d\u56fe\u8fd4\u56de\uff1b\u4f46\u7236\u8282\u70b9\u53ef\u4ee5\u9884\u5148\u5728 node->biss_result \u4e2d\u5b58\u5165\u4f4d\u56fe\uff0c\u6b64\u65f6\u76f4\u63a5\u5c06\u5143\u7ec4 ID \u6309\u4f4d OR \u5408\u5e76\u5230\u73b0\u6709\u4f4d\u56fe\uff0c\u7701\u53bb\u663e\u5f0f UNION \u6b65\u9aa4\u3002", "\u91cd\u65b0\u8ba1\u7b97\u4f9d\u8d56\u8fd0\u884c\u65f6\u4fe1\u606f\u7684\u626b\u63cf\u952e\u503c\uff0c\u7136\u540e\u91cd\u65b0\u626b\u63cf\u88ab\u7d22\u5f15\u7684\u5173\u7cfb\u3002", "\u91cd\u7f6e\u8fd0\u884c\u65f6\u952e\u4e0a\u4e0b\u6587\uff0c\u907f\u514d\u6bcf\u6b21\u626b\u63cf\u5916\u4fa7\u5143\u7ec4\u65f6\u6cc4\u6f0f\u5185\u5b58\u3002\u8fd9\u91cc\u5047\u5b9a\u6bcf\u6b21\u8c03\u7528\u90fd\u91cd\u65b0\u8ba1\u7b97\u6240\u6709\u8fd0\u884c\u65f6\u952e\u3002"]}, {"code": "case T_BitmapIndexScan:\n\t\t\tpname = sname = \"Bitmap Index Scan\";\n\t\t\tbreak;", "title": "\u6838\u5fc3\u6e90\u7801\u4e2d\u7684 EXPLAIN \u6807\u8bc6"}], "localization": {"status": "complete", "sources": [{"url": "/docs/18/using-explain.html", "method": "same-major semantic node", "sha256": "b8835ec9adbc70ec150667a6b5443f8d298222dc0cc8c2bd1abb1c1d64895904", "language": "zh", "matched_nodes": ["#USING-EXPLAIN/div[8]/p[8]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "Scans an index and produces a bitmap of matching tuple locations.", "/versions/18/facts/0/label": "Core node tag", "/versions/18/facts/1/label": "Structured EXPLAIN Node Type", "/versions/18/facts/2/label": "Inputs", "/versions/18/facts/2/value": "An index", "/versions/18/facts/3/label": "Output", "/versions/18/facts/3/value": "Tuple-location bitmap, not a tuple stream", "/versions/18/facts/4/label": "Executor initializer", "/versions/18/facts/5/label": "Memory mechanism", "/versions/18/tables/0/title": "EXPLAIN labels in this source build", "/versions/18/related/1/label": "Using EXPLAIN", "/versions/18/related/2/label": "Parallel plans", "/versions/18/related/5/label": "Index AM", "/versions/18/sections/0/title": "EXPLAIN names and attributes", "/versions/18/sections/1/title": "Memory and temporary storage", "/versions/18/sections/2/title": "Parallel execution and instrumentation", "/versions/18/sections/3/title": "Same-version manual discussion", "/versions/18/sections/4/title": "Examples from this manual build", "/versions/18/sections/5/title": "Executor implementation notes", "/versions/18/sections/6/title": "EXPLAIN identity in core source", "/versions/18/memory/description": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/18/sections/0/paragraphs/0": "Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.", "/versions/18/sections/0/paragraphs/1": "Text names recorded by this source: Bitmap Index Scan.", "/versions/18/sections/0/paragraphs/2": "Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.", "/versions/18/sections/1/paragraphs/0": "The node allocates a tuple-location bitmap using a work_mem-derived budget. A bitmap can retain page-level lossy entries instead of every tuple location; heap rechecks then remain necessary.", "/versions/18/sections/2/paragraphs/0": "The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.", "/versions/18/sections/2/paragraphs/1": "Callbacks in this build: ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation.", "/versions/18/sections/3/paragraphs/0": "Index Scan nodes (as well as Bitmap Index Scan and Index-Only Scan nodes) show an \u201c Index Searches \u201d line that reports the total number of searches across all node executions/ loops :", "/versions/18/sections/3/paragraphs/1": "Here we see a Bitmap Index Scan node that needed 4 separate index searches. The scan had to search the index from the tenk1_thous_tenthous index root page once per integer value from the predicate's IN construct. However, the number of index searches often won't have such a simple correspondence to the query predicate:", "/versions/18/sections/5/paragraphs/0": "nodeBitmapIndexscan.c Routines to support bitmapped index scans of relations", "/versions/18/sections/5/paragraphs/1": "If we have runtime keys and they've not already been set up, do it now. Array keys are also treated as runtime keys; note that if ExecReScan returns with biss_RuntimeKeysReady still false, then there is an empty array key so we should do nothing.", "/versions/18/sections/5/paragraphs/2": "Prepare the result bitmap. Normally we just create a new one to pass back; however, our parent node is allowed to store a pre-made one into node->biss_result, in which case we just OR our tuple IDs into the existing bitmap. (This saves needing explicit UNION steps.)", "/versions/18/sections/5/paragraphs/3": "Recalculates the values of any scan keys whose value depends on information known at runtime, then rescans the indexed relation.", "/versions/18/sections/5/paragraphs/4": "Reset the runtime-key context so we don't leak memory as each outer tuple is scanned. Note this assumes that we will recalculate *all* runtime keys on each call.", "/versions/18/tables/0/columns/0/label": "Text-format label", "/versions/18/tables/0/columns/1/label": "Structured node identity", "/versions/18/sections/4/blocks/0/paragraphs/0": "Example copied from the PostgreSQL 18.6 manual; it was not executed for this collection.", "/versions/18/sections/4/blocks/0/paragraphs/1": "Now, let's make the condition more restrictive:", "/versions/18/sections/4/blocks/1/paragraphs/0": "Example copied from the PostgreSQL 18.6 manual; it was not executed for this collection.", "/versions/18/sections/4/blocks/1/paragraphs/1": "Now let's add another condition to the WHERE clause:"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "855e33ae188369035d13ceabcd53070c74f3db8662a05b8592e8e6c5378af6c2", "canonical_center_text_hash": "5dddd6e1de583527ca00f345ba03ac4da0caf08b880c8d808b0c93ef9517d96a"}, "evidence_kind": "source and documentation", "explain_names": ["Bitmap Index Scan"], "partial_modes": [], "description_zh": "\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002", "comparison_data": {"node_tag": "T_BitmapIndexScan", "strategies": [], "text_names": ["Bitmap Index Scan"], "initializer": "ExecInitBitmapIndexScan", "partial_modes": [], "memory_mechanism": "bitmap-lossification", "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"]}, "comparison_hash": "08e8d1afde24882a70dccba204ec21bdcea148fa12f7f53d14a221b80af1cc37", "manual_language": "zh", "explain_prefixes": ["Parallel", "Async"], "runtime_verified": false, "source_inventory": {"explain": "src/backend/commands/explain.c", "executor": "src/backend/executor/execProcnode.c", "implementation": "src/backend/executor/nodeBitmapIndexscan.c"}, "parallel_callbacks": ["ExecBitmapIndexScanEstimate", "ExecBitmapIndexScanInitializeDSM", "ExecBitmapIndexScanInitializeWorker", "ExecBitmapIndexScanRetrieveInstrumentation"], "description_zh_html": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/zh/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>", "center_zh_rendered": "<p>\u626b\u63cf\u7d22\u5f15\u5e76\u751f\u6210\u5339\u914d\u5143\u7ec4\u4f4d\u7f6e\u7684\u4f4d\u56fe\u3002</p><p>\u6838\u5fc3\u8282\u70b9\u6807\u8bc6\uff1a<code>T_BitmapIndexScan</code>\uff1bEXPLAIN \u540d\u79f0\uff1a<code>Bitmap Index Scan</code>\u3002</p><p>\u672c\u7248\u672c\u6e90\u7801\u4e2d\u7684\u5e76\u884c\u6267\u884c\u6216\u89c2\u6d4b\u56de\u8c03\uff1a<code>ExecBitmapIndexScanEstimate, ExecBitmapIndexScanInitializeDSM, ExecBitmapIndexScanInitializeWorker, ExecBitmapIndexScanRetrieveInstrumentation</code>\u3002\u56de\u8c03\u7684\u5b58\u5728\u4e0d\u8868\u793a\u8be5\u8282\u70b9\u5fc5\u7136\u652f\u6301\u5171\u4eab\u5e76\u884c\u626b\u63cf\uff1b\u5728\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u6267\u884c\u4e5f\u4e0d\u7b49\u4e8e\u5177\u6709\u5e76\u884c\u611f\u77e5\u80fd\u529b\u3002</p><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    \u53ef\u4ee5\u4f7f\u7528 <code>EXPLAIN</code> \u7684 <code>ANALYZE</code> \u9009\u9879\u6765\u68c0\u67e5\u89c4\u5212\u5668\u4f30\u8ba1\u503c\u7684\u51c6\u786e\u6027\u3002\u542f\u7528\u8be5\u9009\u9879\u540e\uff0c<code>EXPLAIN</code> \u4f1a\u5b9e\u9645\u6267\u884c\u67e5\u8be2\uff0c\u7136\u540e\u663e\u793a\u5404\u4e2a\u8ba1\u5212\u8282\u70b9\u7d2f\u8ba1\u7684\u771f\u5b9e\u884c\u8ba1\u6570\u548c\u771f\u5b9e\u8fd0\u884c\u65f6\u95f4\uff0c\u540c\u65f6\u4e5f\u4fdd\u7559\u666e\u901a <code>EXPLAIN</code> \u4f1a\u663e\u793a\u7684\u4f30\u8ba1\u503c\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u4f1a\u5f97\u5230\u5982\u4e0b\u7ed3\u679c\uff1a\n\n</p><p>\n\n    \u6ce8\u610f\uff0c<span>\u201c<span>actual time</span>\u201d</span>\u503c\u4ee5\u6beb\u79d2\u7684\u771f\u5b9e\u65f6\u95f4\u8868\u793a\uff0c\u800c <code>cost</code> \u4f30\u8ba1\u503c\u5219\u4ee5\u4efb\u610f\u5355\u4f4d\u8868\u793a\uff0c\u56e0\u6b64\u4e8c\u8005\u901a\u5e38\u4e0d\u4f1a\u76f4\u63a5\u5bf9\u5e94\u3002\u901a\u5e38\u6700\u503c\u5f97\u5173\u6ce8\u7684\u662f\u4f30\u8ba1\u884c\u6570\u662f\u5426\u4e0e\u5b9e\u9645\u60c5\u51b5\u8db3\u591f\u63a5\u8fd1\u3002\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f30\u8ba1\u503c\u5b8c\u5168\u547d\u4e2d\uff0c\u4f46\u5728\u5b9e\u8df5\u4e2d\u8fd9\u5176\u5b9e\u76f8\u5f53\u5c11\u89c1\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u67e5\u8be2\u8ba1\u5212\u4e2d\uff0c\u4e00\u4e2a\u5b50\u8ba1\u5212\u8282\u70b9\u53ef\u80fd\u4f1a\u6267\u884c\u591a\u6b21\u3002\u4f8b\u5982\uff0c\u4e0a\u9762\u90a3\u4e2a\u5d4c\u5957\u5faa\u73af\u8ba1\u5212\u4e2d\u7684\u5185\u4fa7\u7d22\u5f15\u626b\u63cf\u4f1a\u5bf9\u5916\u4fa7\u7684\u6bcf\u4e00\u884c\u6267\u884c\u4e00\u6b21\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c<code>loops</code> \u503c\u62a5\u544a\u7684\u662f\u8be5\u8282\u70b9\u7684\u603b\u6267\u884c\u6b21\u6570\uff0c\u800c actual time \u548c rows \u663e\u793a\u7684\u662f\u6bcf\u6b21\u6267\u884c\u7684\u5e73\u5747\u503c\u3002\u8fd9\u6837\u505a\u662f\u4e3a\u4e86\u8ba9\u8fd9\u4e9b\u6570\u5b57\u66f4\u5bb9\u6613\u4e0e\u4ee3\u4ef7\u4f30\u8ba1\u7684\u5c55\u793a\u65b9\u5f0f\u76f8\u6bd4\u8f83\u3002\u5c06\u5b83\u4eec\u4e58\u4ee5 <code>loops</code> \u503c\uff0c\u5c31\u80fd\u5f97\u5230\u8be5\u8282\u70b9\u5b9e\u9645\u6d88\u8017\u7684\u603b\u65f6\u95f4\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6267\u884c <code>tenk2</code> \u4e0a\u7684\u7d22\u5f15\u626b\u63cf\u603b\u5171\u82b1\u8d39\u4e86 0.030 \u6beb\u79d2\u3002\n   </p><p>\n    \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>EXPLAIN ANALYZE</code> \u4f1a\u663e\u793a\u9664\u8ba1\u5212\u8282\u70b9\u6267\u884c\u65f6\u95f4\u548c\u884c\u8ba1\u6570\u4e4b\u5916\u7684\u989d\u5916\u6267\u884c\u7edf\u8ba1\u4fe1\u606f\u3002\u4f8b\u5982\uff0cSort \u548c Hash \u8282\u70b9\u4f1a\u63d0\u4f9b\u66f4\u591a\u4fe1\u606f\uff1a\n\n</p><p><a href=\"/docs/18/using-explain.html#USING-EXPLAIN-ANALYZE\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p><p>\u672c\u9875\u5f00\u5934\u7684\u4e2d\u6587\u8bf4\u660e\u4e3a PG.CENTER \u5bf9\u7f16\u8f91\u8bf4\u660e\u7684\u7ffb\u8bd1\uff1b\u624b\u518c\u8282\u9009\u4fdd\u7559\u5bf9\u5e94\u7248\u672c\u4e2d\u6587\u6587\u6863\u539f\u6587\u3002\u6e90\u7801\u4fe1\u606f\u53ca\u624b\u518c\u793a\u4f8b\u4e0d\u4ee3\u8868\u91cd\u65b0\u8fdb\u884c\u8fc7\u8fd0\u884c\u6d4b\u8bd5\u3002</p>"}, "comparison": {"left": "17", "right": "18", "status": "changed", "diff": "--- PostgreSQL 17\n+++ PostgreSQL 18\n@@ -2,7 +2,12 @@\n   \"initializer\": \"ExecInitBitmapIndexScan\",\n   \"memory_mechanism\": \"bitmap-lossification\",\n   \"node_tag\": \"T_BitmapIndexScan\",\n-  \"parallel_callbacks\": [],\n+  \"parallel_callbacks\": [\n+    \"ExecBitmapIndexScanEstimate\",\n+    \"ExecBitmapIndexScanInitializeDSM\",\n+    \"ExecBitmapIndexScanInitializeWorker\",\n+    \"ExecBitmapIndexScanRetrieveInstrumentation\"\n+  ],\n   \"partial_modes\": [],\n   \"strategies\": [],\n   \"text_names\": ["}}