只有一个索引的数据库表...坏主意?

时间:2010-01-18 01:50:13

标签: database database-design language-design

如果一种编程语言允许创建数据库表,但只允许一个字段用作索引......那将是多少限制?我不是一个真正的数据库程序员,所以我想知道这样的系统是否可以用作严肃数据库的基础,或者只是一个玩具。

5 个答案:

答案 0 :(得分:4)

这将是非常有限的。我在桌子上看过多达11个索引,所有这些索引都有目的。毫无疑问,那里的情况要多得多。

数据库中至少应该(或应该)索引主键和所有外键。

索引跨越多列也很常见。

答案 1 :(得分:2)

非关系型数据库(目前风靡NoSQL的所有风靡一时)都是这种情况所致。许多这样的数据库都不是玩具,而是被大量使用作为可扩展的生产系统的基础 - 缺乏自由索引和其他限制几乎令人难以置信的可扩展性,特别是对于“大多数读取”场景。缺点主要在于必须放弃规范化,并以严格依赖于查询需要何种程度优化的方式在所有地方复制信息。

我不确定你的“单一索引”场景是基于什么,但除非它提供与最好的“nosql”存储系统相同的优势(并且你愿意为此付出全部代价) ,似乎不太可能成为技术上可行的概念; - )。

答案 2 :(得分:1)

这取决于。伯克利数据库,例如只有一个密钥,对它的用途非常有用。

另一方面,关系数据库应该让你有机会根据自己的喜好定义尽可能多的索引(正如cletus提到的那样,外键查询会遭受非常糟糕的性能否则)

答案 3 :(得分:0)

通常:索引用于加速数据库查找:就像在书中一样,您搜索单词“computer”,浏览(按字母顺序排列!)索引,并查找所有页码。

如果(非常假设的推理)可以创建一个数据库来优化查询时间而不使用索引:那么这样一个只包含一个索引的数据库并不是一个坏主意。

但如果你在谈论主流数据库,那么我会说:取决于内容。

答案 4 :(得分:0)

这取决于您将如何处理数据。

如果您根据未编制索引的字段进行搜索和选择,则该过程将变慢。同样,如果您根据未编制索引的字段执行连接或合并操作,则速度会变慢。

如果表格有数百万行,这可能太慢而无法接受。

在某些情况下限制自己仅通过一个字段进行访问可能会限制太多。

同样,这取决于你将如何处理数据。