[英]Database tables with only one index … bad idea?
如果一种编程语言允许创建数据库表,但只允许一个字段用作索引......那将是多少限制? 我不是一个真正的数据库程序员,所以我想知道这样的系统是否可以用作严肃数据库的基础,或者只是一个玩具。
这将是非常有限的。 我在桌子上看过多达11个索引,所有这些索引都有目的。 毫无疑问,有些案件的情况要多得多。
至少在数据库中,主键和所有外键将被(或应该)索引。
索引跨越多列也很常见。
非关系数据库(目前在NoSQL运动中风靡一时)近似于这种情况。 许多这样的数据库都不是玩具,而是被大量使用作为可扩展的生产系统的基础 - 缺乏自由索引和其他限制几乎令人难以置信的可扩展性,特别是对于“大多数读取”场景。 缺点主要在于必须放弃规范化,并以严格依赖于查询需要什么程度的优化的方式在整个地方复制信息。
我不确定你的“单一索引”场景是基于什么,但除非它提供与最好的“nosql”存储系统相同的优势(并且你愿意为此付出全部代价),似乎不太可能是技术上可行的概念;-)。
这取决于。 Berkeley DB例如只有一个密钥,对于它的用途非常有用。
另一方面,关系数据库应该让你有机会定义任意数量的索引(正如cletus所提到的,外键查询将遭受非常糟糕的性能,否则)
通常:索引用于加速数据库查找:如在书中,您搜索单词“computer”,浏览(按字母顺序排列!)索引,并查找所有页码。
如果(非常假设的推理)创建了一个数据库,该数据库在不使用索引的情况下优化了查找时间:那么这样一个只包含一个索引的数据库并不是一个坏主意。
但如果你在谈论主流数据库,那么我会说:取决于内容。
这取决于您将如何处理数据。
如果您根据未编制索引的字段进行搜索和选择,则该过程将变慢。 同样,如果您根据未编制索引的字段执行连接或合并操作,则速度会变慢。
如果表有数百万行,这可能太慢而无法接受。
在某些情况下限制自己仅通过一个字段进行访问可能会限制太多。
同样,这取决于您将如何处理数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.