作者:天天写程序 | 来源:互联网 | 2023-07-22 15:53
由于上面提到的原因,很难想象在现实世界中对每列进行索引都是有用的。场景类型将需要一堆不同的查询,所有查询都只访问表的一列。每个查询可能正在访问不同的列。其他答案不能解决查询
由于上面提到的原因,很难想象在现实世界中对每列进行索引都是有用的。场景类型将需要一堆不同的查询,所有查询都只访问表的一列。每个查询可能正在访问不同的列。
其他答案不能解决查询 选择 期间的问题。显然,维护索引是一个问题,但是如果您一次创建一个表然后多次读取,则无需考虑更新/插入/删除的开销。
索引包含原始数据以及指向数据所在的记录/页面的点。索引的结构使您可以快速执行以下操作:查找单个值,按顺序检索值,计算不同值的数量以及查找最小值和最大值。
索引不仅会占用磁盘空间。更重要的是,它占用内存。而且,内存争用通常是决定查询性能的因素。通常,在每列上建立索引将比原始数据占用更多的空间。(一个例外是相对较宽且值相对较少的列。)
另外,要满足许多查询,您可能需要一个或多个索引 以及 原始数据。您的页面缓存中充斥着大量数据,这可能会增加缓存未命中的数量,从而导致更多的开销。
我想知道您的问题是否真的表明您没有对数据结构进行适当的建模。在少数情况下,您希望用户构建临时永久表。通常,它们的数据将以预定义的格式存储,您可以针对访问需求进行优化。