database - 在数据库中创建索引的数据结构

标签 database database-design

可以使用哈希表在数据库中创建索引吗?创建索引的理想数据结构是什么? 如果一个表有一个外键引用其他数据库中的一个字段,如果我们在外键上创建索引会有帮助吗?

最佳答案

Can HashTables be used to create indexes in databases?

有些 DBMS 支持基于散列的索引,有些则不支持。

What is the ideal Data structure to create indexes?

没有数据结构占用 0 字节,也不能在 0 个 CPU 周期内操作,因此没有数据结构是“理想的”。作为软件工程师,我们有责任决定哪种数据结构对我们要实现的特定目标具有最大的好处和最少的损害。

例如,B 树可用于范围扫描,而哈希索引则不是。这是否意味着 B 树“更好”?好吧,如果您需要范围扫描,它们是,但如果您不需要,则可能不一定。

If a table has has a foreign key referencing a field in other database does will it help if we create index on the foreign key?

您通常不能有指向另一个数据库的外键,只有另一个表。

是的,它往往会有所帮助,因为每次在父表中更新或删除一行时,都需要搜索子表以查看是否违反了 FK。这种搜索可以从这样的索引中受益匪浅。许多(但不是全部)DBMS 需要 FK 上的索引(如果不存在,甚至可能会自动创建它)。

OTOH,如果您只向父表添加行,您可以考虑让子表在 FK 字段上未编入索引(假设您的 DBMS 允许您这样做)。

关于database - 在数据库中创建索引的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914733/

相关文章:

java - 如何在运行时知道 POJO 的 ID (@GeneratedValue)

excel - excel如何统计某个字段出现在特定 'week'的次数

sql - 计算值大于或等于 SQL 中另一列的值的行数

mysql - 2 个不同的表是否应该共享相同的点赞/投票表

mysql - 需要数据模型方面的建议

mysql - 无法在 web2py 中创建新数据库...语法错误

mysql - Symfony 2 自引用多对多存储库

mysql - 哪个表模式更好?

php - 连接表 mysql -- 无需双重迭代

sql - 如何在 PostgreSQL 中正确设计 VS 匹配表?