INDEX 表达式有什么作用?最后的例子:
CREATE TABLE tags (
tag_id varchar(255) NOT NULL,
"{Users}{userID}question_id" int4 NOT NULL,
tag varchar(20),
CONSTRAINT tag
PRIMARY KEY (tag_id));
CREATE INDEX tags_tag
ON tags (tag);
最佳答案
安index是一种数据库结构,可在基于索引中的字段进行搜索时帮助加快对数据库中各行的访问。
在您的示例中,CREATE INDEX
语句创建一个名为 tags_tag
的索引在 table 上tags
使用列 tag
.如果您想根据 tag
从表中搜索行字段,数据库可能会使用索引更有效地查找行。如果没有索引,数据库可能不得不对表进行全面扫描,这可能需要更长的时间(取决于许多因素,例如表的大小、值的分布、确切的查询条件)。不同的数据库也支持不同类型的索引,可用于以不同的方式搜索数据。
索引也有一个缺点:对于每个索引,该表的写入速度都会下降。如果你插入一行,有一个索引意味着除了数据库写入行本身,它还必须更新索引。
决定在哪些列上放置索引可能很棘手,而且一如既往,针对真实世界数据的基准测试或真实世界查询是衡量性能的最准确方法。通常,您需要在要搜索的列上建立索引。因此,如果您可能希望通过 tag
查找一行那么在此处放置索引绝对有意义。但是,如果您有地址簿,您(可能)不需要搜索街道、邮政编码或电话号码,因此写入性能受到影响是不值得的。
您的主键列几乎总是有一个由数据库自动生成的索引。如果你想保持特定列的值唯一,一个 UNIQUE INDEX
可以创建来强制执行此操作。
This SO 问题询问有关数据库索引的经验法则,这可能会有用。
关于postgresql - Postgres 中的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209745/