产品动态
-- 禁用索引(立即生效,索引对优化器不可见)ALTER INDEX idx_name UNUSABLE;-- 启用索引(无需重建,索引重新对优化器可见)ALTER INDEX idx_name USABLE;
-- 输入CREATE TABLE test_table (id int, val text);
-- 输出CREATE TABLE;
-- 输入INSERT INTO test_table SELECT i, 'val' || i FROM generate_series(1, 1000) i;
-- 输出INSERT 0 1000;
-- 输入CREATE INDEX idx_test_id ON test_table (id);
-- 输出CREATE INDEX;
-- 输入ANALYZE test_table;
-- 输出ANALYZE;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid = 'idx_test_id'::regclass;
-- 输出index_name | indisvalid-------------+------------idx_test_id | t(1 row);
-- 输入EXPLAIN (COSTS OFF) SELECT * FROM test_table WHERE id = 100;
-- 输出QUERY PLAN---------------------------------------Index Scan using idx_test_id on test_tableIndex Cond: (id = 100)(2 rows);
-- 输入ALTER INDEX idx_test_id UNUSABLE;
-- 输出ALTER INDEX;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid = 'idx_test_id'::regclass;
-- 输出index_name | indisvalid-------------+------------idx_test_id | f(1 row);
-- 输入EXPLAIN (COSTS OFF) SELECT * FROM test_table WHERE id = 100;
-- 输出QUERY PLAN-------------------------------Seq Scan on test_tableFilter: (id = 100)(2 rows);
-- 输入ALTER INDEX idx_test_id USABLE;
-- 输出ALTER INDEX;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid = 'idx_test_id'::regclass;
-- 输出index_name | indisvalid-------------+------------idx_test_id | t(1 row);
-- 输入EXPLAIN (COSTS OFF) SELECT * FROM test_table WHERE id = 100;
-- 输出QUERY PLAN---------------------------------------Index Scan using idx_test_id on test_tableIndex Cond: (id = 100)(2 rows);
-- 输入CREATE TABLE test_part (id int, val text) PARTITION BY RANGE (id);
-- 输出CREATE TABLE;
-- 输入CREATE TABLE test_part_p1 PARTITION OF test_part FOR VALUES FROM (1) TO (500);CREATE TABLE test_part_p2 PARTITION OF test_part FOR VALUES FROM (500) TO (1001);
-- 输出CREATE TABLECREATE TABLE;
-- 输入INSERT INTO test_part SELECT i, 'val' || i FROM generate_series(1, 1000) i;
-- 输出INSERT 0 1000;
-- 输入CREATE INDEX idx_test_part_id ON test_part (id);
-- 输出CREATE INDEX;
-- 输入ANALYZE test_part;
-- 输出ANALYZE;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid::regclass::text LIKE '%test_part%';
-- 输出index_name | indisvalid-------------------------+------------idx_test_part_id | ttest_part_p1_id_idx | ttest_part_p2_id_idx | t(3 rows);
-- 输入ALTER INDEX idx_test_part_id UNUSABLE;
-- 输出ALTER INDEX;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid::regclass::text LIKE '%test_part%';
-- 输出index_name | indisvalid-------------------------+------------idx_test_part_id | ftest_part_p1_id_idx | ttest_part_p2_id_idx | t(3 rows);
-- 输入ALTER INDEX test_part_p1_id_idx UNUSABLE;
-- 输出ALTER INDEX;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid::regclass::text LIKE '%test_part%';
-- 输出index_name | indisvalid-------------------------+------------idx_test_part_id | ftest_part_p1_id_idx | ftest_part_p2_id_idx | t(3 rows);
-- 输入EXPLAIN (COSTS OFF) SELECT * FROM test_part WHERE id = 100;
-- 输出QUERY PLAN-------------------------------------------------------Seq Scan on test_part_p1 test_partFilter: (id = 100)(2 rows);
-- 输入EXPLAIN (COSTS OFF) SELECT * FROM test_part WHERE id = 900;
-- 输出QUERY PLAN-------------------------------------------------------------------------------Index Scan using test_part_p2_id_idx on test_part_p2 test_partIndex Cond: (id = 900)(2 rows);
-- 输入ALTER INDEX idx_test_id USABLE;
-- 输出ALTER INDEX;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid = 'idx_test_id'::regclass;
-- 输出index_name | indisvalid-------------+------------idx_test_id | t(1 row);
-- 输入BEGIN;
-- 输出BEGIN;
-- 输入ALTER INDEX idx_test_id UNUSABLE;
-- 输出ALTER INDEX;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid = 'idx_test_id'::regclass;
-- 输出index_name | indisvalid-------------+------------idx_test_id | f(1 row);
-- 输入ROLLBACK;
-- 输出ROLLBACK;
-- 输入SELECT indexrelid::regclass AS index_name, indisvalidFROM pg_indexWHERE indexrelid = 'idx_test_id'::regclass;
-- 输出index_name | indisvalid-------------+------------idx_test_id | t(1 row);
-- 输入ALTER INDEX idx_test_id UNUSABLE;
-- 输出ALTER INDEX;
-- 输入INSERT INTO test_table VALUES (9999, 'new_value');
-- 输出INSERT 0 1;
-- 输入ALTER INDEX idx_test_id USABLE;
-- 输出ALTER INDEX;
-- 输入EXPLAIN (COSTS OFF) SELECT * FROM test_table WHERE id = 9999;
-- 输出QUERY PLAN---------------------------------------Index Scan using idx_test_id on test_tableIndex Cond: (id = 9999)(2 rows);
-- 输入SELECT * FROM test_table WHERE id = 9999;
-- 输出id | val------+-----------9999 | new_value(1 row);
文档反馈