Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 我应该在数据库的created_列上创建索引吗_Database_Postgresql_Indexing - Fatal编程技术网

Database 我应该在数据库的created_列上创建索引吗

Database 我应该在数据库的created_列上创建索引吗,database,postgresql,indexing,Database,Postgresql,Indexing,也许这是一个愚蠢的问题,但在我的数据库模式中,我正在基于简单posts表进行基于时间的分析。 在postgresql的created_at列上创建索引是一个好主意,还是数据库已经在索引上创建了索引 在我的邮政桌上 | post_id | user_id| some_post_stuff... | created_at | |:--------:|:--------------:|:--------:|:--------------:| | 1| 1 | hello #world | 05

也许这是一个愚蠢的问题,但在我的数据库模式中,我正在基于简单posts表进行基于时间的分析。 在postgresql的created_at列上创建索引是一个好主意,还是数据库已经在索引上创建了索引

在我的邮政桌上

| post_id | user_id| some_post_stuff... | created_at |  
|:--------:|:--------------:|:--------:|:--------------:|  
| 1| 1 | hello #world | 05/05/2021 |  
| 2| 1| #stackoverflow is best | 05/05/2021 |  
在我的标签表中

| tag_id | tag | trended_at |  
|:--------:|:--------------:|:--------:|  
| 1 | world | 05/05/2021 |  
| 2 | stackoverflow | 05/05/2021 |  
| tag_id| post_id| created_at |  
|:--------:|:--------------:|:--------:|  
| 1| 1| 05/05/2021 |  
| 2| 2| 05/05/2021 |  
在我的post_标签表中

| tag_id | tag | trended_at |  
|:--------:|:--------------:|:--------:|  
| 1 | world | 05/05/2021 |  
| 2 | stackoverflow | 05/05/2021 |  
| tag_id| post_id| created_at |  
|:--------:|:--------------:|:--------:|  
| 1| 1| 05/05/2021 |  
| 2| 2| 05/05/2021 |  
我写了一个函数来查找带有最流行标签的趋势帖子。所以每15分钟。数据库cron jobsnodejs客户端函数在post_标记上执行group by命令,然后找到趋势标记,然后选择post。我应该在post_tags.created_at上创建created_at索引吗?因为当我插入此表时,它会更新主键索引文件,但created_at对于这种情况很重要?
感谢您的帮助。

除了主键之外,Postgres不会为您创建索引。如果你想索引一些东西,你需要自己添加它

你应该为一列建立索引吗?取决于您查询的方式。索引对于搜索和排序都很有用。如果没有索引,数据库可能需要搜索整个表或花费大量时间对结果进行排序

如果您的查询必须搜索大量行,并使用order by created_at对它们进行排序,或者在where子句中使用created_at,如where created_at介于“2015-01-01”和“2015-12-31 23:59:59”之间


如果查询返回的行数较少,则可能不必为在处创建的_编制索引。例如:从帖子中选择*,其中user_id=X order by created_at可能会使用user_id上的索引将行过滤到一个小集合。按“创建位置”对它们进行排序会很快,因此不需要索引。

问题并包括表的CREATE语句和您要支持的一个或多个查询。创建位置和趋势位置是什么类型?此表的SELECT、UPDATE和/或DELETE语句在哪里?以及解释、分析、缓冲、详细这些语句的结果。在不知道查询和查询计划的情况下,我们只能猜测。只有知道查询以及查询的需要频率和速度,以及表数据的修改频率和速度,才能决定是否编制索引。