客服微信
考试科目:PGCE-E-091
考试题量:44 道单项选择题、29 道多项选择题(每题 2 分)
通过分数:60%
考试时间:60min
本文为云贝教育刘峰(微信:yunbee_DBA)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
PostgreSQL中支持在同一列中创建多个索引。
A、正确
B、错误
参考答案:A
在 PostgreSQL 中,一般来说,在同一列上创建多个独立的索引是不被推荐的,因为这可能导致维护复杂性和资源浪费。然而,如果您确实有这样的需求,可以使用不同的命名空间(schema)来为同一列创建多个索引。以下是一个示例:
sqlCopy code
-- 创建一个表 CREATE TABLE example_table ( id SERIAL PRIMARY KEY, value INTEGER ); -- 在同一列上创建两个不同的索引 CREATE INDEX idx_value_even ON example_table (value) WHERE value % 2 = 0; CREATE INDEX idx_value_odd ON example_table (value) WHERE value % 2 <> 0; -- 查询使用其中一个索引 EXPLAIN SELECT * FROM example_table WHERE value = 4;
在这个例子中, example_table 表的 value 列有两个索引: idx_value_even 和 idx_value_odd ,分别用于存储偶数和奇数值。这是一个不常见的用例,只是为了演示在同一列上创建多个索引的可能性。
请注意,这种做法可能会引入复杂性,而不是提高性能。在实际应用中,请确保仔细评估您的需求,并根据性能测试选择适当的索引策略。通常,使用复合索引或合适的单一索引更容易管理且更有效。
补充:索引架构及复合索引
实验准备
drop table if exists t1; create table t1 ( a int, b varchar(50)); insert into t1 select a.*, md5(a::varchar) from generate_series(1,500000) a;
查看SQL执行计划
testdb=# explain select * from t1 where a=1 and b='c9f0f895fb98ab9159f51fd0297e236d'; QUERY PLAN ----------------------------------------------------------------------------- Gather (cost=1000.00..8292.10 rows=1 width=37) Workers Planned: 2 -> Parallel Seq Scan on t1 (cost=0.00..7292.00 rows=1 width=37) Filter: ((a = 1) AND ((b)::text = 'c9f0f895fb98ab9159f51fd0297e236d '::text)) (6 rows)
这面发现执行计划为全表扫描
创建组合索引
testdb# create index idx_t1_n1 on t1(a,b);
再次查看执行计划
testdb=# explain select * from t1 where a=1 and b='c9f0f895fb98ab9159f51fd0297e236d'; QUERY PLAN -------------------------------------------------------------------------- Index Only Scan using idx_t1_n1 on t1 (cost=0.42..4.44 rows=1 width=37) Index Cond: ((a = 1) AND (b = 'c9f0f895fb98ab9159f51fd0297e236d '::text)) (4 rows)
PostgreSQL PGCE考试为理论考试,需通过两门考试才能拿到“PostgreSQL PGCE证书”。
以下是PostgreSQL官网的考试费,可以添加云贝教育的课程顾问老师微信19941464235或者19906632509,咨询有优惠。
PostgreSQL证书如下 合格考生公布:考后不超过 5 个工作日 “开源软件联盟 PostgreSQL 分会”公众号发布 证书寄送:考后统一寄送至培训机构)
云贝教育有专业的PostgreSQL PGCE认证培训课程,想快速通过考试的同学可以扫码联系老师咨询(点击文字转跳至PostgreSQL PGCE大纲)