【发布时间】:2023-04-05 10:25:02
【问题描述】:
我不知道我要查找的内容的正确词,因此很难在谷歌上搜索。
我想知道它是否可以使用数据库(独立于技术,但有兴趣了解它是否可以使用 Oracle、MySQL 和 Postgres)指向特定行而不是再次执行我的查询。
所以我最初可能会执行一个查询,找到一些感兴趣的行,然后希望通过指针列表或其他一些元数据来避免再次搜索它们,这些元数据指示数据库上的位置,我可以直接在下一个是时候我想要那些结果了。
我意识到数据库上有缓存,但我想将这些“指针”保留在其他地方,因为这样的缓存最终并不能解决这个问题。这只是一个索引,我存储索引并以此查找吗?我当前的大多数表都没有索引,我不希望索引有时会降低速度。
那么我一直试图在 google 中使用的神奇术语是什么?
干杯
【问题讨论】:
-
要么您有一个真正独特的数据库方案(例如,仅存储),要么您必须再次查找索引的优缺点。另请注意,考虑到往返时间、处理开销等,单独通过“指针”查询许多行可能无效(即使是聚集索引)。
-
为了系统,我认为数据库可以被认为是只读的,我永远不需要从这个系统更新或插入。我需要做一些我猜想通过指针来确定是否合适的总和——还有更多的阅读要做。
-
如果您的系统是“主要阅读”,那么索引将大大提高检索时间;唯一的成本是索引的存储空间加上一个小的开销(可能无法衡量)决定哪个是用于查询的最佳索引。如果您的系统是“主要更新”(因此您做了很多更改),那么也许(但只有也许)索引的成本超过了它们的好处。即使这样,通常每个表至少有一个索引(用于主键) - 您只需减少辅助索引的数量。
-
如果空间是一个考虑因素(即你不希望表和索引之间的数据重复),Oracle 有索引组织表的选项,其中主键索引和表是相同的. SQL Server 也这样做。不确定 Postgres/MySQL。
标签: database oracle postgresql indexing information-retrieval