概念
hstore 是 PostgreSQL 中的一种键值对数据类型,用于存储非结构化的属性数据。它允许你将任意的键(字符串)与值(字符串)组合在一起,非常适合存储灵活的、可变的属性集合,例如用户自定义字段、配置信息或元数据。 使用 hstore,你可以像处理 JSON 一样操作键值对,但相比 JSON,hstore 在性能上更优,尤其适用于只需要简单键值存储的场景。它支持高效的查询和索引,例如通过 GIN 索引实现快速检索。 要使用 hstore,首先需要在数据库中启用扩展: ```sql CREATE EXTENSION IF NOT EXISTS hstore; ``` 然后可以创建包含 hstore 类型字段的表: ```sql CREATE TABLE products ( id SERIAL PRIMARY KEY, name TEXT, attributes HSTORE ); ``` 插入数据时,可以使用 `hstore` 函数或字面量语法: ```sql INSERT INTO products (name, attributes) VALUES ('Laptop', '"color" => "silver", "weight" => "2.5kg"'); ``` 查询时,可以通过键名访问值: ```sql SELECT name, attributes->'color' FROM products; ``` 还可以进行复杂的操作,如合并、删除键、检查键是否存在等: ```sql -- 合并两个 hstore 值 SELECT attributes || '"screen_size" => "15.6 inches"' FROM products; -- 删除键 SELECT attributes - 'weight' FROM products; -- 检查键是否存在 SELECT attributes ? 'color' FROM products; ``` hstore 适合用于需要灵活存储属性但又不希望引入完整 JSON 复杂性的场景,是处理半结构化数据的高效工具。
了解 PostgreSQL 扩展中的 hstore。